CSES - Vaihto ja siirto

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ä lukua
  • MOVE: 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].