Lieben Sie nicht diese Explosionszeichnungen, in denen eine Maschine oder ein Gegenstand in seine kleinsten Teile zerlegt wird?
Lass uns das mit einer Saite machen!
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die
- gibt eine Zeichenfolge ein, die nur druckbare ASCII-Zeichen enthält ;
- zerlegt die Zeichenkette in Gruppen von Zeichen, die nicht gleich Leerzeichen sind (die "Teile" der Zeichenkette);
- gibt diese Gruppen in einem beliebigen Format aus, wobei zwischen den Gruppen ein gewisses Trennzeichen besteht .
Zum Beispiel angesichts der Zeichenfolge
Ah, abracadabra!
Die Ausgabe wäre die folgenden Gruppen:
! , EIN aaaaa bb c d h rr
Jede Gruppe in der Ausgabe enthält gleiche Zeichen, wobei Leerzeichen entfernt werden. Als Trennzeichen zwischen den Gruppen wurde ein Zeilenvorschub verwendet. Weitere Informationen zu zulässigen Formaten finden Sie weiter unten.
Regeln
Die Eingabe sollte eine Zeichenfolge oder ein Array von Zeichen sein. Es enthält nur druckbare ASCII-Zeichen (einschließlich des Bereichs von Leerzeichen bis Tilde). Wenn Ihre Sprache dies nicht unterstützt, können Sie die Eingabe in Form von Zahlen vornehmen, die ASCII-Codes darstellen.
Sie können davon ausgehen, dass die Eingabe mindestens ein Nicht-Leerzeichen enthält .
Die Ausgabe sollte aus Zeichen bestehen (auch wenn die Eingabe über ASCII-Codes erfolgt). Es muss ein eindeutiges Trennzeichen zwischen den Gruppen geben , das sich von allen Nicht-Leerzeichen unterscheidet, die in der Eingabe erscheinen können.
Wenn die Ausgabe über Funktionsrückgabe erfolgt, kann es sich auch um ein Array oder Zeichenfolgen oder ein Array von Arrays aus Zeichen oder eine ähnliche Struktur handeln. In diesem Fall sorgt die Struktur für die notwendige Trennung.
Ein Trennzeichen zwischen den Zeichen jeder Gruppe ist optional . Wenn es eine gibt, gilt die gleiche Regel: Es darf kein Nicht-Leerzeichen in der Eingabe sein. Außerdem darf es nicht dasselbe Trennzeichen sein, das zwischen Gruppen verwendet wird.
Ansonsten ist das Format flexibel. Hier sind einige Beispiele:
Die Gruppen können wie oben gezeigt durch Zeilenumbrüche getrennte Zeichenfolgen sein.
Die Gruppen können durch beliebige Nicht-ASCII-Zeichen getrennt sein, z
¬
. Die Ausgabe für die obige Eingabe wäre die Zeichenfolge:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
Die Gruppen können durch n > 1 Leerzeichen getrennt sein (auch wenn n variabel ist), wobei Zeichen zwischen jeder Gruppe durch ein einzelnes Leerzeichen getrennt sind:
! , A a a a a a b b c d h r r
Die Ausgabe kann auch ein Array oder eine Liste von Zeichenfolgen sein, die von einer Funktion zurückgegeben werden:
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
Oder ein Array von Zeichen-Arrays:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
Beispiele für Formate, die nach den Regeln nicht zulässig sind:
- Ein Komma kann nicht als Trennzeichen (
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
) verwendet werden, da die Eingabe Kommas enthalten kann. - Es ist nicht zulässig, das Trennzeichen zwischen Gruppen (
!,Aaaaaabbcdhrr
) zu löschen oder dasselbe Trennzeichen zwischen Gruppen und innerhalb von Gruppen (! , A a a a a a b b c d h r r
) zu verwenden.
Die Gruppen können in der Ausgabe in beliebiger Reihenfolge angezeigt werden. Zum Beispiel: Alphabetische Reihenfolge (wie in den obigen Beispielen), Reihenfolge des ersten Auftretens in der Zeichenfolge, ... Die Reihenfolge muss nicht konsistent oder sogar deterministisch sein.
Beachten Sie, dass die Eingabe keine Neue - Zeile - Zeichen enthalten kann, und A
und a
sind verschiedene Zeichen (Gruppierung ist case-sentitive ).
Kürzester Code in Bytes gewinnt.
Testfälle
In jedem Testfall wird die erste Zeile eingegeben und die verbleibenden Zeilen werden ausgegeben, wobei sich jede Gruppe in einer anderen Zeile befindet.
Testfall 1:
Ah, Abrakadabra! ! , EIN aaaaa bb c d h rr
Testfall 2:
\ o / \ o / \ o / /// \\\ ooo
Testfall 3:
Ein Mann, ein Plan, ein Kanal: Panama! ! ,, : EIN P aaaaaaaa c ll mm nnnn p
Testfall 4:
"Zeig mir, wie du diesen Trick machst, der mich zum Schreien bringt", sagte sie "" , S aaaaa cc dd eeeeeee hhhhhh ii kk mmmm n ooooo rr ssss tttttt u ww y