Правильный алгоритм

Всем привет! У меня есть следующая задача: Дано prompt в котором задается вопрос таблицы умножения. Например: What is 5 * 8? (Тут числа задаются случайно через Math.random()). В ответ вводится числа от 1 до 81. Например я ввожу 25. И когда пользователь нажимает на "Отмена" результат падает в такой массив: array = [[5, 8], 25]. То есть array[0][0] = 5; array = [0][1] = 8; array[1] = 25;

Перейду к вопросу: Что я хочу получить в ответ? Допустим вышли вот такие вопросы:

  1. 5 * 8?
  2. 8 * 4?
  3. 4 * 3?
  4. 1 * 2?

То есть здесь можно понять, что 8 и 4 встречается 2 раза, а остальные цифры 5, 3, 1, 2 встречаются по одному разу.

И если для данных вопросов отвечу неправильно, то мне надо в консольку вывести такое сообщение:

В таблице на 5 - 1 ошибка!

В таблице на 8 - 2 ошибки!

В таблице на 4 - 2 ошибки!

В таблице на 5 - 1 ошибка!

В таблице на 3 - 1 ошибка!

В таблице на 1 - 1 ошибка!

В таблице на 2 - 1 ошибка!

Моя реализация выглядит так:

    for (let i = 0; i < array.length; i+=2) {
         if ((parseInt(array[i][0]) * parseInt(array[i][1])) !== parseInt(array[i + 1])) {
             for (let j = 1; j < 9; j++) {
                 if (parseInt(array[i][0]) === j) k++;
                 if (parseInt(array[i][1]) === j) l++;
             }
         }
         if (k !== 0 && l !== 0) {
             console.log('В таблице на ' + array[i][0] + ' - ' + k + choiceErrorText(k));
             console.log('В таблице на ' + array[i][1] + ' - ' + l + choiceErrorText(l));
         }
    }


    function choiceErrorText(number) {
        if (number === 1) {
            return ' ошибка!';
        } else if (number >= 2 && number <= 4) {
            return ' ошибки!';
        } else if (number > 4) {
            return ' ошибок!';
        }
    }

Мой код выдает что-то такое:

В таблице на 5 - 1 ошибка!

В таблице на 8 - 1 ошибка!

В таблице на 8 - 2 ошибки!

В таблице на 4 - 2 ошибки!

В таблице на 4 - 3 ошибки!

В таблице на 3 - 3 ошибки!


Ответы (1 шт):

Автор решения: Igor

Не выводите ничего в цикле, в котором вычисляется количество ошибок, а запоминайте результаты вычислений. А потом выводите их отдельным циклом.

→ Ссылка