Не получение правильного результата при решении сложной задачи

#javascript

Вопрос:

Я пытаюсь решить эту проблему с кодированием, Результат, который мне нужен

 1 8 9 16 17  2 7 10 15 18  3 6 11 14 19  4 5 12 13 20  

логика для colindex, которая имеет четный номер строки * colIndex 1 // 4*0 1 что дает 1 для столбца 0 строка 1

логика для colindex с нечетным номером строки*(colIndex 1); // 4*(1 1) что дает 8 для столбца 2 строки 1

 const rowsNumber = 4; const columnsNumber = 5;  for(let i = 0; ilt;rowsNumber; i  ) {   for(let j = 0; jlt;columnsNumber; j  ) {  if(j % 2 == 0) {  console.log(rowsNumber * j   1);  } else {  console.log(rowsNumber * (j   1))  }  }  }  

Я получаю следующий результат

 1 8 9 16 17 1 8 9 16 17 1 8 9 16 17 1 8 9 16 17  

Что я делаю не так?

Ответ №1:

Ваша логика справедлива только для первой строки. Вам также придется рассмотреть RowIndex. Фактическая логика Для четных строк : rowsNumber * (colIndex 1) — RowIndex Для нечетных строк : rowsNumber * colIndex 1 RowIndex, поэтому код будет следующим

 const rowsNumber = 4; const columnsNumber = 5; for(let i=0;ilt;rowsNumber;i  ) {  for(let j=0;jlt;columnsNumber;j  ) {  if(j%2 == 0) {  console.log(rowsNumber*j 1 i);  } else {  console.log(rowsNumber*(j 1)-i)  }  } }  

Это дает результат в виде :

 1 8 9 16 17 2 7 10 15 18 3 6 11 14 19 4 5 12 13 20