Als Informatiker sind Sie wahrscheinlich alle mit den grundlegenden Listenoperationen von Pop und Push vertraut . Hierbei handelt es sich um einfache Vorgänge, mit denen eine Liste von Elementen geändert wird. Haben Sie schon einmal von dem Flop gehört ? (wie im Flip- Flop )? Es ist ziemlich einfach. Kehren Sie mit einer Zahl n die ersten n Elemente der Liste um. Hier ist ein Beispiel:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
Das Coole an der Flop-Operation ist, dass Sie damit einige coole Dinge für eine Liste tun können, wie zum Beispiel das Sortieren . Wir werden etwas Ähnliches mit Flops machen:
Eine Liste von ganzen Zahlen gegeben, "Nachbar es". Mit anderen Worten, sortieren Sie es so, dass jedes doppelte Element nacheinander angezeigt wird.
Das geht mit Flops! Nehmen Sie zum Beispiel die folgende Liste:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
Dies führt uns zur Definition der heutigen Herausforderung:
Geben Sie bei einer gegebenen Liste von Ganzzahlen eine beliebige Menge von Flops aus, die dazu führen, dass die Liste benachbart ist.
Am Beispiel der letzten Liste sollten Sie Folgendes ausgeben:
4
3
6
weil das Floppen der Liste um 4, dann um 3 und dann um 6 eine benachbarte Liste ergibt. Denken Sie daran, dass Sie nicht die kürzestmögliche Liste der Flops drucken müssen, die einer Liste benachbart sind. Wenn Sie gedruckt hatten:
4
4
4
3
1
1
6
2
2
Stattdessen wäre dies immer noch eine gültige Ausgabe. Sie dürfen jedoch niemals eine Zahl ausgeben, die größer als die Länge der Liste ist. Dies liegt daran, dass für eine Liste das a = [1, 2, 3]
Aufrufen a.flop(4)
unsinnig ist.
Hier sind einige Beispiele:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
Beachten Sie, dass in jedem dieser Beispiele die angegebene Ausgabe nur eine mögliche gültige Ausgabe ist. Wie ich bereits sagte, ist jeder Satz von Flops, der an die angegebene Liste angrenzt, eine gültige Ausgabe . Mit diesem Python-Skript können Sie überprüfen, ob eine bestimmte Liste von Flops einer Liste korrekt benachbart ist.
Sie können Eingaben und Ausgaben in jedem vernünftigen Format vornehmen. Beispielsweise sind Funktionsargumente / Rückgabewert, STDIN / STDOUT, Lesen / Schreiben einer Datei usw. gültig. Wie üblich ist dies Code-Golf . Machen Sie also das kürzeste Programm, das Sie können, und haben Sie Spaß! :)