Tengo una matriz, que se genera aleatoriamente cada vez, y quiero crear una matriz usándola. La matriz es para un juego de sudoku, por lo que debe generarse mediante un patrón. La primera línea es siempre la matriz que estoy usando. El patrón (desde aquí: https://gamedev.stackexchange.com/a/138228 ) es así:
line 0: 8 9 3 2 7 6 4 5 1 line 1: 2 7 6 4 5 1 8 9 3 (shift 3) line 2: 4 5 1 8 9 3 2 7 6 (shift 3) line 3: 5 1 8 9 3 2 7 6 4 (shift 1) line 4: 9 3 2 7 6 4 5 1 8 (shift 3) line 5: 7 6 4 5 1 8 9 3 2 (shift 3) line 6: 6 4 5 1 8 9 3 2 7 (shift 1) line 7: 1 8 9 3 2 7 6 4 5 (shift 3) line 8: 3 2 7 6 4 5 1 8 9 (shift 3)¿Cómo asigno la matriz a la primera línea y luego, para el resto de las líneas, la línea desplazada de antes? No funciona como lo intenté...
function generateArray() { var min = 1; var max = 9; var stop = 9; var numbers = []; for (let i = 0; i < stop; i++) { var n = Math.floor(Math.random() * max) + min; var check = numbers.includes(n); if (check === false) { numbers.push(n); } else { while (check === true) { n = Math.floor(Math.random() * max) + min; check = numbers.includes(n); if (check === false) { numbers.push(n); } } } } return numbers; } function shiftArray(array, nr) { array = array.concat(array.splice(0, nr)); // shift left by nr return array; } function generateMatrix() { var v = generateArray(); var m = []; m[0] = v; m[1] = shiftArray(m[0], 3); m[2] = shiftArray(m[1], 3); m[3] = shiftArray(m[2], 1); m[4] = shiftArray(m[3], 3); m[5] = shiftArray(m[4], 3); m[6] = shiftArray(m[5], 1); m[7] = shiftArray(m[6], 3); m[8] = shiftArray(m[7], 3); console.log("matrix: ", m); return m; } generateMatrix();