Egyszerű listaművelet Pythonban

Hozzászólások

Csak a pontosítás kedvéért:

{1,1,2,2,3,3}

Ez nem halmaz ám :)

--
Keep it simple, stupid.

"elvileg elég a lista felén végigszaladni, ha addig helyes, akkor végig helyes (legalábbis azt hiszem)."

Ezt nem látom. Mi van, ha egy hosszú lista végén van ez?

..., 1, 2, 3, 1 }

Az eleje lehet jó, csak a végén derül ki, hogy hibás.

Megj.: Persze, az lehet, hogy nem értettem meg a feladatot. :-)

KisKresz

Hát az én ötletem az volt, hogy azért, mert a lista hosszúsága és elemei fixek , így ha a végén el van rontva vmi (rossz helyen van, mint az egyes), akkor más elemek is el lesznek rontva. Ha ellenben a feléig nincs semmi elrontva akkor valamiért úgy tűnt, hogy már onnan sem lehet benne hiba (hiszen ha hiba lenne, akkor már előbb kijött volna). Ezt biztod be lehet bizonyítani könnyen, de nekem ez egyenlőre csak megérzés. :)

-----------
"Generally, Russian technology assumes dumb machines and smart humans, not the other way around." -- The Russian Tea HOWTO

Tekinthetsz a számpárokra, mint középen üres blokkokra:

1x1
2xx2
3xxx3
4xxxx4
5xxxxx5
...

amiket egy 2*n hosszú területre kell bezsúfolni.
Ha n=5, akkor az 5-ös blokkot négyféleképpen rakhatod le (illetve szimmetriaokok miatt csak kétféleképpen), a 4-est ötféleképpen, stb.
Ha nem tudod lerakni az adott blokkot, akkor visszalépsz, és így végessok lépésben megáll a keresés.

Erre is gondoltam, sőt igazából ez volt az első ötletem. (a második meg az, hogy szerzek pár LEGO darabot, és... ) :)

A gond az, hogy nincs ötletem, hogy hogyan álljak neki ábrázolni ilyen objektumokat (*), és hogyan játszam le velük a keresést. Tudsz javasolni vmi könyvet/tutorialt/howto-t?

(*) Mármint szépen és átláthatóan.
-----------
"Generally, Russian technology assumes dumb machines and smart humans, not the other way around." -- The Russian Tea HOWTO

Nem is minden n-re van megoldás, pl. 5, 6, 9, 10-re nincs.

Viszont például 23-ra:

[23, 21, 22, 18, 16, 20, 12, 19, 11, 8, 17, 4, 1, 15, 1, 14, 4, 13, 8, 12, 11, 16, 18, 21, 23, 22, 20, 19, 17, 15, 14, 13, 10, 7, 9, 3, 5, 2, 6, 3, 2, 7, 5, 10, 9, 6]

:)