fix duplicates and blocking

This commit is contained in:
Klemek
2021-10-14 23:47:56 +02:00
parent a08bccac36
commit e116311ca1
+7 -14
View File
@@ -151,14 +151,14 @@ let app = {
self.options.selected.forEach((prefix) => { self.options.selected.forEach((prefix) => {
const row = kanas.rows.indexOf(prefix); const row = kanas.rows.indexOf(prefix);
if (prefix === '(N)') { if (prefix === '(N)') {
self.kanas.push([ 'N', kanas.hiraganas[row][0], kanas.katakanas[row][0] ]); self.kanas.push([ 'N', kanas.hiraganas[row][0], kanas.katakanas[row][0], row, 0 ]);
} else { } else {
kanas.columns.forEach((suffix, column) => { kanas.columns.forEach((suffix, column) => {
const text = kanas.exceptions[prefix + suffix] const text = kanas.exceptions[prefix + suffix]
? kanas.exceptions[prefix + suffix] ? kanas.exceptions[prefix + suffix]
: prefix + suffix; : prefix + suffix;
if (kanas.hiraganas[row][column] || kanas.katakanas[row][column]) { if (kanas.hiraganas[row][column] || kanas.katakanas[row][column]) {
self.kanas.push([ text, kanas.hiraganas[row][column], kanas.katakanas[row][column] ]); self.kanas.push([ text, kanas.hiraganas[row][column], kanas.katakanas[row][column], row, column ]);
} }
}); });
} }
@@ -181,19 +181,12 @@ let app = {
similarIndexes.push(self.kanas.indexOf(trap)); similarIndexes.push(self.kanas.indexOf(trap));
} }
} }
if (kana[0].length === 1) { if (kana[0].length !== 1 || kana[0] !== 'N') {
if (kana[0] !== 'N') { // !== (N) const sameRow = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[3] === kana[3]);
const sameRow = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[0].length === 1); if (sameRow.length > 0) {
similarIndexes.push(self.kanas.indexOf(utils.randitem(sameRow))); similarIndexes.push(self.kanas.indexOf(utils.randitem(sameRow)));
const sameColumn = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[0].substr(-1, 1) === kana[0].substr(-1, 1));
if (sameColumn.length > 0) {
similarIndexes.push(self.kanas.indexOf(utils.randitem(sameColumn)));
}
} }
} else { const sameColumn = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[4] === kana[4]);
const sameRow = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[0].substr(0, 1) === kana[0].substr(0, 1));
similarIndexes.push(self.kanas.indexOf(utils.randitem(sameRow)));
const sameColumn = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[0].substr(-1, 1) === kana[0].substr(-1, 1));
if (sameColumn.length > 0) { if (sameColumn.length > 0) {
similarIndexes.push(self.kanas.indexOf(utils.randitem(sameColumn))); similarIndexes.push(self.kanas.indexOf(utils.randitem(sameColumn)));
} }
@@ -207,7 +200,7 @@ let app = {
const questionIndex = utils.randindex(self.kanas); const questionIndex = utils.randindex(self.kanas);
const similarIndexes = self.findSimilars(questionIndex, mapping); const similarIndexes = self.findSimilars(questionIndex, mapping);
const otherIndexes = utils.randindexes(self.kanas, Math.max(0, self.options.answers - similarIndexes.length - 1), questionIndex ); const otherIndexes = utils.randindexes(self.kanas, Math.max(0, self.options.answers - similarIndexes.length - 1), questionIndex, ...similarIndexes );
self.question = self.kanas[questionIndex][mapping[0]]; self.question = self.kanas[questionIndex][mapping[0]];
self.answers = [ questionIndex ] self.answers = [ questionIndex ]