Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Putkaposti 42: Kiertopeli

Sivun loppuun

Antti Laaksonen [14.11.2010 18:01:44]

#

Uusi putkaposti on ilmestynyt:

https://www.ohjelmointiputka.net/postit/tehtava.php?tunnus=kpeli

Tehtävä on peräisin tämän syksyn Datatähdestä.

Antti Laaksonen [14.11.2010 18:35:19]

#

Ratkaisua voi etsiä myös tämän sivun avulla:

https://www.ohjelmointiputka.net/tiedostot/kpeli.html

Jokotai [14.11.2010 19:03:14]

#

Näen tuosta kilpailusta ja etenkin tuosta tehtävästä vieläkin painajaisia :(

Metabolix [14.11.2010 21:37:45]

#

Ratkesipa helposti käsin.

msdos464 [28.11.2010 09:01:48]

#

Ohjelma hyödyntää tietoa oikeasta siirtojen minimimäärästä, käyttää muistia noin 230 mt, ja ratkaisu löytyy yhdellä säikeellä noin 18 sekunnissa. Mitens teillä?

Mulla kesti aika kauan löytää toimiva heuristiikka A* haulle, kun en osaa ratkaista edes yksinkertaista tilannetta käsin :P

Chiman [28.11.2010 09:46:08]

#

Tilan pisteyttämisessä oli itsellänikin suurimmat ongelmat. Puhdas A* jäi kokeilematta, koska en luottanut tuohon pisteytykseen tarpeeksi. Sen sijaan rajoitetun syvyyshaun ja parhaalta näyttävän haaran valinnan vuorottelu tuotti 16-ratkaisun noin vartin jauhettuaan. Kielenä Python (PyPy), algoritmin muistinkulutus muutama kilotavu.

L2-K2 [28.11.2010 12:41:37]

#

Metabolixia lainaten: "Ratkesipa helposti käsin."

Triviaaliratkaisun (24 siirtoa) keksi vähän kokeilemalla, siitä putosi 4 siirtoa pois, kun muutti vähän siirtojen järjestystä. Viimeisten 4 ylimääräisen siirron poistaminen onnistui kuitenkin vasta, kun otti avuksi kynän ja paperia.

jlaire [28.11.2010 16:28:29]

#

Löysin käsin 18-siirtoisen parissa minuutissa, mutta sen parantaminen ei vaikuttanut helpolta enkä ollut varma optimaalisuudesta. IDDFS-haku yksinkertaisella heuristiikalla löytää 16-siirtoisen 5 sekunnissa. Muistinkäyttö on olematon.

msdos464 [28.11.2010 17:37:33]

#

Sain muistinkäytön 32 megaan ja ajan noin 4.5 sekunttiin, mutta tulos löytyy vähän tuurilla. Muistia kuluu paljon noihin A* haun tiloihin...

jalski [28.11.2010 18:02:47]

#

msdos464 kirjoitti:

Mulla kesti aika kauan löytää toimiva heuristiikka A* haulle, kun en osaa ratkaista edes yksinkertaista tilannetta käsin :P

Manhattan distance?

msdos464 [28.11.2010 18:29:22]

#

jalski kirjoitti:

msdos464 kirjoitti:

Mulla kesti aika kauan löytää toimiva heuristiikka A* haulle, kun en osaa ratkaista edes yksinkertaista tilannetta käsin :P

Manhattan distance?

Mielestäni se antaa turhan paljon rangaistusta siitä että oikeat luvut ovat kivasti jonossa, mutta jos ne ovat väärässä paikassa. En ole varma että johtaako se väistämättä pidempään suoritusaikaan.

Metabolix [28.11.2010 18:39:57]

#

funktio kirjoitti:

Löysin käsin 18-siirtoisen parissa minuutissa

Taisi sitten käydä tuuri, kun 16 siirron ratkaisu löytyi yhdellä ensimmäisistä lähestymistavoista, joita keksin kokeilla. Oli sellainen kutina, että noin siisti alkuasetelma varmaankin ratkeaa jollain yllättävän yksinkertaisella sarjalla...

Jaska [30.11.2010 00:00:34]

#

Mittasin 20 ajoa, ja tulokset olivat 334-611 ms. Mittasin Javan omalla metodilla System.currentTimeMillis().


Sivun alkuun

Vastaus

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

Tietoa sivustosta