Annettuna on lista, jossa on luvut 1 \dots n jossakin järjestyksessä. Tehtäväsi on järjestää lista kahden komennon avulla:
SWAP
: vaihtaa keskenään listan kaksi ensimmäistä lukuaMOVE
: siirtää listan ensimmäisen luvun viimeiseksi
Suunnittele algoritmi, joka muodostaa listan komennoista, joiden suorittaminen järjestää listan. Algoritmi voi antaa minkä tahansa ratkaisun, kunhan siinä on enintään n^3 komentoa.
Toteuta tiedostoon swapmove.py
funktio solve
, joka antaa listan komennoista. Jokaisen komennon tulee olla merkkijono SWAP
tai MOVE
.
def solve(t): # TODO if __name__ == "__main__": print(solve([1, 2])) # esim. [] print(solve([2, 1])) # esim. [SWAP] print(solve([1, 3, 2])) # esim. [SWAP, MOVE] print(solve([3, 2, 1])) # esim. [MOVE, SWAP] print(solve([2, 3, 4, 1])) # esim. [MOVE, MOVE, MOVE]
Selitys: Lista [1,3,2] voidaan järjestää suorittamalla ensin komento SWAP
, jolloin listasta tulee [3,1,2], ja sitten komento MOVE
, jolloin listasta tulee [1,2,3].