36:n kortin muistipeli pitäisi saada aikaiseksi. Peli on muuten valmis, mutta korttien sekoitus puuttuu. Olen nyt muuttanut taulukon listaksi, joka sekoitti shufflella kaikki 36 korttia eli kortit on sekaisin. Lista pitäisi muuttaa vielä taulukoksi, mutta miten?
Kyllähän ne voisi sekoittaa suoraan taulukostakin. Esimerkiksi voisi arpoa kaksi korttia ja vaihtaa niiden paikkaa. Vaikka sadan tai tuhannen vaihdon jälkeen luulisi korttien olevan sekaisin. Kysymykseesi vastaan, että eikö ne voisi ihan yksitellen siirtää? Listan 1. jäsen ruutuun [1, 1], 2. jäsen [1, 2] jne, 7. jäsen [2, 1], 8. jäsen [2, 2] jne.
Näin sekoittaminen onnistuu ainakin yksiuloitteiselle taulukolle.
Tietotyypin tuosta voi tarvittaessa vaihtaa helposti toiseksi (int[] -> toinentietotyyppi[]).
public static int[] shuffle(int[] array) { for (int i = 0; i < array.length; i++) { int swap = (int)(Math.random() * array.length); int tmp = array[i]; array[i] = array[swap]; array[swap] = tmp; } return array; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.