function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
function shufflePartial(data) {
function foo(lst) {
lst = shuffleArray(lst);
return lst.map(item => item[0]).concat(lst.findIndex(item => item[1]) + 1);
}
return [data[0]].concat(data.slice(1).map(k => {
const processed = [[k[0]]].concat(k.slice(1, -1).map((item, index) => [item, k[k.length - 1] === index + 1]));
return [k[0]].concat(foo(processed.slice(1)));
}));
}
// Example usage:
const data = [
['Japanese', 'Choice1', 'Choice2', 'Choice3', 'Choice4', 'Answer'],
['個人・個々の', 'opposite', 'microscopic', 'individual', 'separate', 3],
['必要な', 'necessity', 'necessarily', 'need', 'necessary', 4]
];
console.log(shufflePartial(data));
ZnVuY3Rpb24gc2h1ZmZsZUFycmF5KGFycmF5KSB7CiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgewogICAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoaSArIDEpKTsKICAgICAgICBbYXJyYXlbaV0sIGFycmF5W2pdXSA9IFthcnJheVtqXSwgYXJyYXlbaV1dOwogICAgfQogICAgcmV0dXJuIGFycmF5Owp9CgpmdW5jdGlvbiBzaHVmZmxlUGFydGlhbChkYXRhKSB7CiAgICBmdW5jdGlvbiBmb28obHN0KSB7CiAgICAgICAgbHN0ID0gc2h1ZmZsZUFycmF5KGxzdCk7CiAgICAgICAgcmV0dXJuIGxzdC5tYXAoaXRlbSA9PiBpdGVtWzBdKS5jb25jYXQobHN0LmZpbmRJbmRleChpdGVtID0+IGl0ZW1bMV0pICsgMSk7CiAgICB9CiAgICByZXR1cm4gW2RhdGFbMF1dLmNvbmNhdChkYXRhLnNsaWNlKDEpLm1hcChrID0+IHsKICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBbW2tbMF1dXS5jb25jYXQoay5zbGljZSgxLCAtMSkubWFwKChpdGVtLCBpbmRleCkgPT4gW2l0ZW0sIGtbay5sZW5ndGggLSAxXSA9PT0gaW5kZXggKyAxXSkpOwogICAgICAgIHJldHVybiBba1swXV0uY29uY2F0KGZvbyhwcm9jZXNzZWQuc2xpY2UoMSkpKTsKICAgIH0pKTsKfQoKLy8gRXhhbXBsZSB1c2FnZToKY29uc3QgZGF0YSA9IFsKICAgIFsnSmFwYW5lc2UnLCAnQ2hvaWNlMScsICdDaG9pY2UyJywgJ0Nob2ljZTMnLCAnQ2hvaWNlNCcsICdBbnN3ZXInXSwKICAgIFsn5YCL5Lq644O75YCL44CF44GuJywgJ29wcG9zaXRlJywgJ21pY3Jvc2NvcGljJywgJ2luZGl2aWR1YWwnLCAnc2VwYXJhdGUnLCAzXSwKICAgIFsn5b+F6KaB44GqJywgJ25lY2Vzc2l0eScsICduZWNlc3NhcmlseScsICduZWVkJywgJ25lY2Vzc2FyeScsIDRdCl07Cgpjb25zb2xlLmxvZyhzaHVmZmxlUGFydGlhbChkYXRhKSk7Cgo=
Japanese,Choice1,Choice2,Choice3,Choice4,Answer,個人・個々の,opposite,separate,individual,microscopic,3,必要な,necessity,necessary,necessarily,need,2