Meine Drähte sind alle verwickelt!
Ist es nicht ärgerlich, wenn sich die Drähte verheddern? Nun, das ist mir gerade passiert, also möchte ich mir helfen, sie zu entwirren! Zur Vereinfachung habe ich sie alle vom Gerät getrennt, aber sie sind immer noch mit der Steckdose verbunden. Ihre Herausforderung besteht darin, herauszufinden, wie Sie sie entwirren können!
Eingang
Die Eingabe besteht aus Leerzeichen, Pipes und Xs (beide Fälle). Die Eingabe sieht ungefähr so aus:
| | | |
X | |
| | x
| X |
| | | |
Ein großes X bedeutet, dass die linke Leitung die rechte Leitung kreuzt und ein kleines x das Gegenteil bedeutet. Die erste und letzte Zeile wird immer sein | | | |.... Sie können die Eingabe als durch Kommas getrennte Zeichenfolge, als Array von Zeichenfolgen usw. interpretieren. Das Format ist nicht streng, solange es sinnvoll ist und keine zusätzlichen Informationen enthält.
Ausgabe
Für diese Herausforderung muss ich nicht nur wissen, wie lange ich brauche, sondern auch genau wissen, was zu tun ist. Geben Sie also eine Liste von ganzzahligen Paaren mit dem Zeichen R oder L aus, wobei die Groß- und Kleinschreibung nicht berücksichtigt wird. Dabei wird angegeben, welche beiden Drähte auf welche Weise entwirrt werden sollen (R bedeutet rechts über links und umgekehrt für L). Sie müssen mir sagen, wie ich sie auflösen soll. Ich kann das nicht selbst herausfinden. Die Ausgabe ist auch ziemlich flexibel, solange Sie alle Ganzzahlpaare + Zeichen in der richtigen Reihenfolge ausgeben und keinen zusätzlichen Unsinntext ausgeben (Klammern, Kommas usw. sind in Ordnung). Die Drähte können null oder eins sein, der Index muss jedoch von links beginnen. Beachten Sie, dass Sie von unten, nicht von oben entwirren müssen. Der Ausgabestil muss konsistent sein. Wenn dies nicht offensichtlich ist, geben Sie bitte an, wie Sie ausgeben. Der Fall des Zeichens muss nicht konsistent sein,
Beispielausgabe
Für die obige Beispieleingabe würde die Ausgabe ungefähr so aussehen:
2 3 R
3 4 L
1 2 R
Das Ausgabeformat ist hier eine durch Zeilenumbrüche getrennte Liste von durch Leerzeichen getrennten Werten. Dies ist 1-indiziert.
Weitere Spezifikationen
Es ist gültig, X und x in beliebiger Reihenfolge vertikal übereinander zu stapeln. Da ich faul bin, möchte ich die Kabel nicht unnötig vertauschen. Geben Sie für diese Fälle nichts aus. Wenn ich das finde, ziehe ich leicht an den Drähten, um sie gerade zu machen.
Es ist auch gültig, mehrere X und x vertikal zu stapeln, und solange kein Draht an anderen Kreuzungen beteiligt ist, möchte ich keine zusätzlichen Bewegungen (weil ich faul bin). Wenn also die Zeichen X X x X x xin einer Spalte ohne andere Kreuzungen angezeigt werden, sollte die Ausgabe immer noch leer sein!
Falls dies nicht klar ist, eliminiert R X und L eliminiert x.
In derselben Reihe können sich zwei Drahtkreuzungen befinden. In diesem Fall spielt die Reihenfolge dieser beiden Tauschvorgänge keine Rolle. Sie werden niemals so etwas bekommen | X X |(dies ist nicht sinnvoll, da dies impliziert, dass der mittlere Draht sowohl links als auch rechts über den Drähten gekreuzt wird).
Es gibt nicht immer Kreuzungen ...
Die Eingabe kann eine einzelne Pipe sein. Die Eingabe wird jedoch niemals leer sein.
Kürzeste gültige Lösung gewinnt am 20. Dezember!
Mehr Beispiele
Wie ich es versprochen habe:
Beispiel 1
Eingang
| | | | | |
| | X x
X | x |
| x | X
X X | |
| | | | | |
Ausgabe
1 2 R
3 4 R
2 3 L
5 6 R
1 2 R
4 5 L
3 4 R
5 6 L
Beispiel 2
Eingang
| | |
X |
| x
| | |
| X
| x
| | |
Ausgabe
2 3 L
1 2 R
Beispiel 3
Eingang
|
Die Ausgabe ist leer. Ja, Sie müssen sich mit diesem Fall befassen.
Beispiel 4
Eingang
| |
X
x
X
x
X
x
X
x
X
x
| |
Die Ausgabe ist leer. Nur zum Spaß :).
Beispiel 5
Eingang
| |
X
X
x
X
x
x
| |
Die Ausgabe ist noch leer ...