Programozás‎ > ‎Feladatok‎ > ‎

2d Rubik

A 2d Rubik-kocka egy 3x3-as táblázat, amelyben a 0,1,2,...,8 számok találhatók. A megengedett lépések a következők: bármelyik sor vagy oszlop egy egységgel "elforgatható" bármelyik irányban, a sorok jobbra és balra, az oszlopok fel és le. Az elforgatás azt jelenti, hogy minden elem eggyel arrébb lép, az utolsó pedig bejön az első helyére.

Feladat

Írjunk programot, ami egy adott kezdőállapotból előállítja az alaphelyzetet:

012
345
678

Olyan megoldást kell keresnünk, ami a lehető legkevesebb lépésben ér célba. Ha nem oldható meg a kiindulási helyzet, azt is fel kell ismernünk.

Bemenet

A bemenet egyetlen sorában 0,1,2,..,8 számok találhatók, valamilyen sorrendben. A számokat soronként balról jobbra kell beírni, tehát a

3 5 6 1 2 0 8 7 4

bemenethez tartozó tábla:

3 5 6
1 2 0
8 7 4

Kimenet

A legrövidebb megoldás állapotait kell kiírni az alább látható formátumban.

Példa

Bemenet  Kimenet
3 5 6 1 2 0 8 7 4 356
120
874

356
120
748

156
720
348

146
750
328

146
075
328

126
045
378

612
045
378

012
345
678


Tesztadatok

Készül...

Címkék

A feladat forrása: saját feladat
Algoritmusok: szélességi bejárás