Volem afegir el mètode canvia_lloc(i,j) a la classe Llista.
Aquest mètode mou l’element de la posició i de la llista (el primer element és a la posició 0) i l’insereix al davant de l’element a la posició j, tot eliminant-lo d’on estava (les posicions es refereixen al lloc que ocupen els elements abans de fer cap operació sobre la llista).
Per exemple, si la nostra llista l és 2 90 3 8 7 5 4 2 87 67,
Precondició
Suposarem que la llista no és buida, i que 0 ≤ i,j < N on N és la mida de la llista
Entrada
Primer hi ha un natural n, que ens indica el nombre d’elements de la llista. Després apareixen n nombres enters, que formen la llista inicial. Després trobem una seqüència de parells de naturals i, j, arguments per a que canvia_lloc(i,j) modifiqui la llista.
Vegeu els exemples que formen el joc de proves públic.
Observacions
Dins el codi del mètode demanat NO podeu fer servir cap mètode de la classe Llista. Heu de manipular exclusivament les instàncies de _Node que formen la implementació de la llista.
Heu de baixar-vos el fitxer code.py (icona de la serp). Aquest fitxer és un programa amb tot el que cal per executar els jocs de prova públics. Només falta, clar, el mètode que us demana l’enunciat. Aquest fitxer l’heu de completar amb el codi que falta, i això, tot, és el que heu d’enviar al Jutge com a solució.
La representació textual de la llista lst l’obtenim fent print(lst). Aquesta és la sortida del nostre programa: La llista després de totes les transformacions indicades per l’entrada.
L’eficiència i la qualitat de la solució es tindran en compte a la correcció manual.
Input
8 949 395 932 860 603 579 307 868 3 5 5 7 2 5 2 3 6 1 3 1
Output
949 -- 603 -- 579 -- 395 -- 860 -- 932 -- 307 -- 868
Input
7 304 66 361 862 2 86 516 3 1 0 6 4 0 6 6 4 5 1 0 4 4 1 3
Output
862 -- 66 -- 86 -- 361 -- 2 -- 304 -- 516
Input
6 713 91 566 394 469 176 4 3 4 1 2 0 4 2 2 3 4 5 4 1
Output
91 -- 566 -- 713 -- 469 -- 394 -- 176