From e116311ca1f7cf6c9fe54097b230a88090717fe6 Mon Sep 17 00:00:00 2001 From: Klemek Date: Thu, 14 Oct 2021 23:47:56 +0200 Subject: [PATCH] fix duplicates and blocking --- main.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/main.js b/main.js index 6ff82a8..335c178 100644 --- a/main.js +++ b/main.js @@ -151,14 +151,14 @@ let app = { self.options.selected.forEach((prefix) => { const row = kanas.rows.indexOf(prefix); 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 { kanas.columns.forEach((suffix, column) => { const text = kanas.exceptions[prefix + suffix] ? kanas.exceptions[prefix + suffix] : prefix + suffix; 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)); } } - if (kana[0].length === 1) { - if (kana[0] !== 'N') { // !== (N) - const sameRow = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[0].length === 1); + if (kana[0].length !== 1 || kana[0] !== 'N') { + const sameRow = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[3] === kana[3]); + if (sameRow.length > 0) { 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 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)); + const sameColumn = self.kanas.filter((kana2, i) => !similarIndexes.contains(i) && kana2 !== kana && kana2[4] === kana[4]); if (sameColumn.length > 0) { similarIndexes.push(self.kanas.indexOf(utils.randitem(sameColumn))); } @@ -207,7 +200,7 @@ let app = { const questionIndex = utils.randindex(self.kanas); 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.answers = [ questionIndex ]