Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sudoku

Sivun loppuun

manninen [28.05.2012 18:07:25]

#

Pystynkö mitenkään / helposti luomaan seuraavanvaisen taulukon satunnaisesti, niin, että sama numero ei esiinny kahta kertaa samalla rivillä

oikein

$ratkaisu = array(
  array(7,4,6,8,5,3,1,9,2),
  array(2,3,8,1,9,6,7,4,5),
  array(5,9,1,4,2,7,6,3,8),
  array(8,1,4,6,3,9,2,5,7),
  array(3,6,7,2,8,5,4,1,9),
  array(9,5,2,7,4,1,8,6,3),
  array(6,2,9,3,7,4,5,8,1),
  array(1,8,5,9,6,2,3,7,4),
  array(4,7,3,5,1,8,9,2,6)
);

väärin

$ratkaisu = array(
  array(7,4,6,8,5,3,6,9,2),
  array(2,3,8,1,9,6,7,4,5),
  array(5,9,1,4,2,7,6,3,8),
  array(8,1,4,6,3,9,2,5,7),
  array(3,6,7,2,8,5,4,1,9),
  array(9,5,2,7,4,1,8,6,3),
  array(7,2,9,3,7,6,1,8,1),
  array(1,8,5,9,6,2,3,7,4),
  array(4,7,3,5,1,8,9,2,6)
);

Mod. korjasi kooditagit!

-tossu- [28.05.2012 18:21:53]

#

Onnistuu vaikka näin olettaen, että tarkoitat rivillä vaakariviä:

$ratkaisu = array();
for ($i = 0; $i < 9; $i++) {
        $numerot = range(1, 9);
        shuffle($numerot);
        $ratkaisu[] = $numerot;
}

print_r($ratkaisu);

manninen [28.05.2012 20:50:53]

#

vaaka sekä pysty

jlaire [28.05.2012 22:31:54]

#

Kun aiheen otsikkona on sudoku, niin yhdeksän 3x3-neliötäkään eivät varmaan saa sisältää duplikaatteja.

Yksi tapa on antaa sudoku-ratkaisijalle osittain täytetty ruudukko. Jos ratkaisija ei toimi deterministisesti, sille voi antaa myös tyhjän ruudukon. Toinen vaihtoehto voisi olla lähteä täytetystä ruudukosta ja tehdä siihen satunnaisia muutoksia, jotka säilyttävä invariantin, mutta en tiedä miten helppoa tämä olisi.

tneva82 [29.05.2012 09:04:38]

#

jlaire kirjoitti:

Kun aiheen otsikkona on sudoku, niin yhdeksän 3x3-neliötäkään eivät varmaan saa sisältää duplikaatteja.

Yksi tapa on antaa sudoku-ratkaisijalle osittain täytetty ruudukko. Jos ratkaisija ei toimi deterministisesti, sille voi antaa myös tyhjän ruudukon. Toinen vaihtoehto voisi olla lähteä täytetystä ruudukosta ja tehdä siihen satunnaisia muutoksia, jotka säilyttävä invariantin, mutta en tiedä miten helppoa tämä olisi.

Jooh. Itsekkin varmaan toteuttaisin niin että antaisin osittain täytetyn(helpompi tarkistaa tuon oikeellisuus käsittääkseni) ja sitten tarkistaisin täytetyn läpi(suhteellisen helppoa). Näin ohjelman ei tarvitse itse luoda täysin oikeata josta osa piilotettaisiin mikä tuntuu ainakin itselleni hankalammalta.

manninen [29.05.2012 14:20:19]

#

Tuolla osittain täytetyllä logiikalla olenkin tehnyt toimivan version, mutta kiinnostaisi juuri sellainen logiikka millä pelipöytä arvotaan satunnaisesti.

Lebe80 [29.05.2012 14:33:07]

#

Mutta saako oikeaa Sudoku-pöytää arpoa satunnaisesti? Tai lähinnä pitäisikö silloin valmiit numerot asetella sen mukaisesti, ettei peliin voi tulla vahingossakaan useampaa kuin yksi oikea vastaus. Eikös se yksi ainoa oikein vastaus ole vähän niin kuin Sudokun idea?

ZeroGravity [30.05.2012 08:48:55]

#

Vähän kun Googlea käyttää, niin tuolta löytyi yksi (PHP koodi) ratkaisu arvontaan: http://www.mattlefevre.com/viewExample.php?tut­=PHP&proj=Sudoku Generator

Hankalampaa lienee tehdä tuosta sellainen valinta numeroita näkyviin (automaattisesti), että sudoku olisi ratkaistavissa, mutta kuitenkin riittävän haastava ja että ratkaisuja olisi vain yksi.

Jaska [30.05.2012 08:55:28]

#

Täällä on generaattori, joka generoi sudokuja ratkaistavaksi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta