Bei einer gegebenen Zeichenfolge besteht Ihre Aufgabe darin, sie wie unten beschrieben in eine zickzackartige Struktur zu reduzieren.
In einen Zickzack falten
Wir nehmen den String "Mississippi"
als Beispiel:
Geben Sie zunächst das längste Präfix aus, das nur aus eindeutigen Zeichen besteht:
Mis
Wenn Sie das erste doppelte Zeichen C erreichen , ignorieren Sie es und geben Sie das längste Präfix aus, das aus eindeutigen Zeichen der verbleibenden Zeichenfolge (
issippi
) vertikal unterhalb des ersten Vorkommens von C besteht :Mis i s
Wiederholen Sie den Vorgang im Wechsel zwischen horizontaler und vertikaler Fortsetzung. Aber seien Sie jetzt vorsichtig (in Schritt 1), um die horizontale Ausgabe nach dem letzten Auftreten des doppelten Zeichens fortzusetzen, das nicht unbedingt das letzte ist, wie in diesem Fall:
Mis i sip ----- Mis i sip i
Regeln
- Die Zeichenfolge enthält nur druckbare ASCII-Zeichen, jedoch keine Leerzeichen.
- Sie können in jeder Programmiersprache antreten und Eingaben und Ausgaben mit jeder Standardmethode und in jedem vernünftigen Format 1 vornehmen, wobei zu beachten ist, dass diese Lücken standardmäßig verboten sind. Dies ist Codegolf , daher gewinnt die kürzeste Übermittlung (in Bytes) für jede Sprache .
- 1 Eingabe: Zeichenfolge / Liste der Zeichen / was auch immer Ihre Sprache zur Darstellung von Zeichenfolgen verwendet. Ausgabe: Mehrzeilige Zeichenfolge, Liste von Zeichenfolgen, die Zeilen darstellen, oder Liste von Zeichenlisten / Zeichenfolgen der Länge 1, aber fügen Sie Ihrer Antwort nach Möglichkeit eine hübsche Druckversion Ihres Codes bei.
- In Bezug auf zusätzliche Leerzeichen kann die Ausgabe Folgendes enthalten:
- Führende / nachfolgende Zeilenumbrüche
- Leerzeichen in jeder Zeile / am Ende
- Eine konsistente Anzahl von führenden Leerzeichen in jeder Zeile
- Sie müssen mit der horizontalen Ausgabe beginnen. Möglicherweise beginnen Sie nicht vertikal.
Testfälle
Eingänge:
"Perfekt" "Mississippi" "Kuriositäten" "Trivialitäten" "Cthulhu" PPCG "pOpOpOpOpOp" "ABCCCE" "ABCCCECCEEEEC" "abcdcebffg" "abca" "AAAAAAAA"
Entsprechende Ausgänge:
Perf c t
Mis ich Schluck ich
Od ies t
Triv ein l ies t
Cthul u
P C G
pO OpO Pop p
ABC C E
ABC CCE E EG
A B C D e b fg
ABC
EIN AA EIN
b
sollten, da Sie nur Duplikate in der verbleibenden Zeichenfolge berücksichtigen sollten, dh nach "Verzweigung". Nach dem Erreichen der zweitenc
, Sie gibt den längsten Präfix der einzigartigen Zeichen des restlichen Zeichenfolge , das istebffg
(also die Ausgabeebf
vertikal und horizontal danach fort), so dass Sie von dem Teil der Zeichenfolge Sorge um die Zeichen nicht , dass wurde bereits vor dem Orientierungswechsel ausgegeben. Wenn es Ihnen immer noch unklar erscheint, werde ich mit diesem Testfall ein weiteres schrittweises Beispiel erstellen.ABCcde
"A" ≠ "a"
. Die Ausgabe fürABCcde
wäre nurABCcde
AAAAAAAA
Antworten:
Wolfram Language (Mathematica) , 143 Bytes
Probieren Sie es online!
Enthält
0xF8FF
, was dem\[Transpose]
Operator entspricht.Puh, es war schwer, das Ergebnis in eine Saite zu verwandeln. Es ist nicht so schwer, jeden Zweig zu bekommen:
#//.{q___,a_,r___,a_,Longest@s___}:>{q,a,{r},{s}}&
quelle
Python 2 , 131 Bytes
Probieren Sie es online!
-1 danke an Lynn .
Druckt als Tupel von Listen mit Zeichenfolgen der Länge 1. Hübsch gedruckte Ausgabe .
quelle
Python 2 ,
184176175168 Bytes-5 Bytes dank Mr. Xcoder
Probieren Sie es online!
quelle
\
? Sie können auch wie in meiner Lösung eine Liste mit Listen von Zeichenfolgen der Länge 1 pro OP ausgeben.CJam , 81 Bytes
Probieren Sie es online!
quelle