Vous n'aimez pas ces schémas à vues éclatées dans lesquels une machine ou un objet est démonté en ses plus petites pièces?
Faisons cela à une chaîne!
Le défi
Écrivez un programme ou une fonction qui
- saisit une chaîne contenant uniquement des caractères ASCII imprimables ;
- dissèque la chaîne en groupes de caractères égaux sans espace (les "morceaux" de la chaîne);
- affiche ces groupes dans un format pratique, avec un séparateur entre les groupes .
Par exemple, étant donné la chaîne
Ah, abracadabra!
le résultat serait les groupes suivants:
! , UNE aaaaa bb c ré h rr
Chaque groupe de la sortie contient des caractères égaux, avec des espaces supprimés. Une nouvelle ligne a été utilisée comme séparateur entre les groupes. Plus d'informations sur les formats autorisés ci-dessous.
Règles
L' entrée doit être une chaîne ou un tableau de caractères. Il ne contiendra que des caractères ASCII imprimables (la plage comprise de l'espace au tilde). Si votre langue ne le supporte pas, vous pouvez saisir les données sous forme de nombres représentant des codes ASCII.
Vous pouvez supposer que l'entrée contient au moins un caractère autre que l'espace .
La sortie doit être composée de caractères (même si l'entrée est au moyen de codes ASCII). Il doit exister un séparateur non ambigu entre les groupes , différent de tout caractère non-espace pouvant apparaître dans l'entrée.
Si la sortie est renvoyée via la fonction return, il peut également s'agir d'un tableau ou de chaînes, ou d'un tableau de tableaux de caractères, ou d'une structure similaire. Dans ce cas, la structure fournit la séparation nécessaire.
Un séparateur entre les caractères de chaque groupe est facultatif . S'il en existe un, la même règle s'applique: il ne peut s'agir d'un caractère non espace qui puisse apparaître dans l'entrée. En outre, il ne peut pas s'agir du même séparateur que celui utilisé entre les groupes.
Autre que cela, le format est flexible. Voici quelques exemples:
Les groupes peuvent être des chaînes séparées par des lignes, comme indiqué ci-dessus.
Les groupes peuvent être séparés par tout caractère non-ASCII, tel que
¬
. La sortie pour l'entrée ci-dessus serait la chaîne:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
Les groupes peuvent être séparés par n > 1 espaces (même si n est variable), avec des caractères entre chaque groupe séparés par un seul espace:
! , A a a a a a b b c d h r r
La sortie peut également être un tableau ou une liste de chaînes renvoyées par une fonction:
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
Ou un tableau de tableaux de caractères:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
Exemples de formats non autorisés selon les règles:
- Une virgule ne peut pas être utilisée comme séparateur (
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
), car l'entrée peut contenir des virgules. - Il n'est pas accepté de supprimer le séparateur entre groupes (
!,Aaaaaabbcdhrr
) ou d'utiliser le même séparateur entre groupes et au sein de groupes (! , A a a a a a b b c d h r r
).
Les groupes peuvent apparaître dans n'importe quel ordre dans la sortie. Par exemple: ordre alphabétique (comme dans les exemples ci-dessus), ordre de première apparition dans la chaîne, ... L'ordre n'a pas besoin d'être cohérent ni même déterministe.
Notez que l'entrée ne doit pas contenir de caractères de nouvelle ligne, et A
il a
s'agit de caractères différents (le groupement est sensible à la casse ).
Le code le plus court en octets gagne.
Cas de test
Dans chaque cas de test, la première ligne est entrée et les lignes restantes sont la sortie, chaque groupe se trouvant sur une ligne différente.
Cas de test 1:
Ah, abracadabra! ! , UNE aaaaa bb c ré h rr
Cas de test 2:
\ o / \ o / \ o / /// \\\ ooo
Cas de test 3:
Un homme, un plan, un canal: Panama! ! ,, : UNE P aaaaaaaaa c ll mm nnnn p
Cas de test 4:
"Montre-moi comment tu fais ce tour, celui qui me fait crier" dit-elle "" , S aaaaa cc jj eeeeeee hhhhhh ii kk mmmm n ooooo rr ssss tttttt vous ww y