Hej!
Jestem zupełnie niezaznajomiony z js, ale muszę napisać na zajęcia program, który ma przetasować planszę x na y elementów. Szukając komend w internecie napisałem program, który generuje szereg z określoną ilością elementów (jedna połowa to jedynki, a druga dwójki). Oto on:
let array = [];
let columnsNum = 6; // parzysty!!!
let rowsNum = 9;
const columns = Array(columnsNum/2).fill(1);
for(a=1; a<=columnsNum/2; a++) {
columns.push(2);
}
for(b=0; b<rowsNum; b++) {
array.push(columns);
}
Druga część programu wybiera po kolei każdy wiersz i kolumnę, a następnie podmienia go z przypadkowym elementem w tym samym wierszu. Powtarza to 3 razy:
for (a=0; a<=2; a++) {
for (b=0; b<rowsNum; b++){
for (c=0; c<columnsNum; c++){
let rand = Math.floor(Math.random() * columnsNum);
var tmp = array[b][rand];
array[b][rand] = array[b][c];
array[b][c] = tmp;
}
}
console.log(array);
}
Problem w tym, że po przetasowaniu każdy wiersz wygląda tak samo (jest przetasowany, ale każdy kolejny niżej jest taki sam).
Przykładowy przebieg programu:
[[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ],
[ 1, 1, 1, 2, 2, 2 ]]
[[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ],
[ 2, 1, 2, 1, 2, 1 ]]
[[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ],
[ 1, 1, 2, 1, 2, 2 ]]
[[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ],
[ 2, 1, 2, 1, 1, 2 ]]
Kiedy wpisuję zmienną array ręcznie, wszystko działa dobrze... Nie mam pojęcia, czym różni się wygenerowany szereg.
Wiem, że program mógł być o wiele lepszy, ale to jest dosłownie pierwsza rzecz, którą w życiu napisałem ;). Bardzo proszę pomoc!