Non ami quei diagrammi a vista esplosa in cui una macchina o un oggetto viene smontato nei suoi pezzi più piccoli?
Facciamolo con una stringa!
La sfida
Scrivi un programma o una funzione che
- inserisce una stringa contenente solo caratteri ASCII stampabili ;
- seziona la stringa in gruppi di caratteri uguali non spaziali (i "pezzi" della stringa);
- genera quei gruppi in qualsiasi formato conveniente, con qualche separatore tra i gruppi .
Ad esempio, data la stringa
Ah, abracadabra!
l'output sarebbe i seguenti gruppi:
! , UN AAAAA bb c d h rr
Ogni gruppo nell'output contiene caratteri uguali, con spazi rimossi. Una nuova riga è stata utilizzata come separatore tra i gruppi. Ulteriori informazioni sui formati consentiti di seguito.
Regole
L' input dovrebbe essere una stringa o una matrice di caratteri. Conterrà solo caratteri ASCII stampabili (l'intervallo compreso dallo spazio alla tilde). Se la tua lingua non lo supporta, puoi prendere l'input sotto forma di numeri che rappresentano i codici ASCII.
Si può presumere che l'input contenga almeno un carattere non spaziale .
L' output deve essere composto da caratteri (anche se l'input avviene tramite codici ASCII). Deve esserci un separatore non ambiguo tra i gruppi , diverso da qualsiasi carattere non spaziale che può apparire nell'input.
Se l'output è tramite il ritorno di funzione, può anche essere una matrice o stringhe o una matrice di matrici di caratteri o una struttura simile. In tal caso la struttura fornisce la separazione necessaria.
Un separatore tra i caratteri di ciascun gruppo è facoltativo . Se ce n'è uno, si applica la stessa regola: non può essere un carattere non spaziale che può apparire nell'input. Inoltre, non può essere lo stesso separatore utilizzato tra i gruppi.
A parte questo, il formato è flessibile. Ecco alcuni esempi:
I gruppi possono essere stringhe separate da newline, come mostrato sopra.
I gruppi possono essere separati da qualsiasi carattere non ASCII, ad esempio
¬
. L'output per l'input sopra sarebbe la stringa:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
I gruppi possono essere separati da n > 1 spazi (anche se n è variabile), con i caratteri tra ogni gruppo separati da un singolo spazio:
! , A a a a a a b b c d h r r
L'output può anche essere un array o un elenco di stringhe restituite da una funzione:
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
O una serie di array di caratteri:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
Esempi di formati non consentiti, secondo le regole:
- Una virgola non può essere utilizzata come separatore (
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
), poiché l'input può contenere virgole. - Non è consentito eliminare il separatore tra gruppi (
!,Aaaaaabbcdhrr
) o utilizzare lo stesso separatore tra gruppi e all'interno di gruppi (! , A a a a a a b b c d h r r
).
I gruppi possono apparire in qualsiasi ordine nell'output. Ad esempio: ordine alfabetico (come negli esempi sopra), ordine di prima apparizione nella stringa, ... L'ordine non deve essere coerente o addirittura deterministico.
Si noti che l'input non può contenere caratteri di nuova riga e A
che a
sono caratteri diversi (il raggruppamento fa distinzione tra maiuscole e minuscole ).
Vince il codice più breve in byte.
Casi test
In ogni caso di test, viene immessa la prima riga e le restanti righe sono l'output, con ciascun gruppo in una riga diversa.
Caso di prova 1:
Ah, abracadabra! ! , UN AAAAA bb c d h rr
Caso di prova 2:
\ O / \ o / \ o / /// \\\ ooo
Caso di prova 3:
Un uomo, un piano, un canale: Panama! ! ,, : UN P aaaaaaaaa c ll mm nnnn p
Caso di prova 4:
"Fammi vedere come fai quel trucco, quello che mi fa urlare" disse "" , S AAAAA cc dd eeeeeee hhhhhh ii kk mmmm n ooooo rr ssss tttttt u ww y