Étant donné une chaîne, votre tâche consiste à la réduire en une structure de type zigzag comme décrit ci-dessous.
Pliage en zigzag
Nous prendrons la chaîne "Mississippi"
comme exemple:
Tout d'abord, affichez le préfixe le plus long composé uniquement de caractères uniques:
Mis
Lorsque vous atteignez le premier caractère en double C , ignorez-le et affichez le préfixe le plus long composé de caractères uniques de la chaîne restante (
issippi
) verticalement, sous la première occurrence de C :Mis i s
Répétez le processus, en alternant entre la continuation horizontale et verticale. Mais maintenant, faites attention (à l'étape 1) de continuer à sortir horizontalement à partir de la dernière occurrence du caractère en double, qui n'est pas nécessairement le dernier, comme dans ce cas:
Mis i sip ----- Mis i sip i
Règles
- La chaîne ne contiendra que des caractères ASCII imprimables, mais ne contiendra aucun type d'espace blanc.
- Vous pouvez concurrencer dans n'importe quel langage de programmation et pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard et dans n'importe quel format raisonnable 1 , tout en prenant note que ces failles sont interdites par défaut. Il s'agit de code-golf , donc la soumission la plus courte (en octets) pour chaque langue l' emporte.
- 1 entrée: chaîne / liste de caractères / tout ce que votre langue utilise pour représenter des chaînes. Sortie: chaîne multiligne, liste de chaînes représentant des lignes ou liste de listes de caractères / chaînes de longueur 1, mais veuillez inclure une version jolie impression de votre code dans votre réponse, si possible.
- Concernant les espaces supplémentaires, la sortie peut contenir:
- Nouvelles lignes principales / finales
- Espaces de fin sur chaque ligne / à la fin
- Un nombre cohérent d'espaces de tête sur chaque ligne
- Vous devez commencer à produire horizontalement, vous ne pouvez pas démarrer verticalement.
Cas de test
Contributions:
"Parfait" "Mississippi" "Bizarreries" "Anecdotes" "Cthulhu" "PPCG" "pOpOpOpOpOpOp" "ABCCCE" "ABCCCECCEEEEC" "abcdcebffg" "abca" "AAAAAAAA"
Sorties correspondantes:
Perf c t
Mis je siroter je
Od ies t
Triv une l ies t
Cthul u
P C g
pO OpO pop p
abc C E
abc CCE E EC
a B c d e b fg
abc
UNE AA UNE
b
, car vous ne devez considérer que les doublons dans la chaîne restante , c'est-à-dire après la "ramification". Une fois que vous atteignez la secondec
, vous affichez le préfixe le plus long des caractères uniques de la chaîne restante , qui estebffg
(produisant ainsiebf
verticalement et continuant horizontalement après cela), vous n'avez donc pas à vous soucier des caractères de la partie de la chaîne qui était déjà sorti avant de changer d'orientation. Si cela ne vous semble toujours pas clair, je vais faire un autre exemple étape par étape avec ce cas de test.ABCcde
"A" ≠ "a"
. La sortie pourABCcde
serait justeABCcde
AAAAAAAA
Réponses:
Wolfram Language (Mathematica) , 143 octets
Essayez-le en ligne!
Contient
0xF8FF
, ce qui correspond à l'\[Transpose]
opérateur.Ouf, c'était difficile de transformer le résultat en une chaîne. Obtenir chaque branche n'est pas si difficile:
#//.{q___,a_,r___,a_,Longest@s___}:>{q,a,{r},{s}}&
la source
Python 2 , 131 octets
Essayez-le en ligne!
-1 merci à Lynn .
S'imprime comme un tuple de listes de chaînes de longueur 1. Sortie assez imprimée .
la source
Python 2 ,
184176175 175168 octets-5 octets grâce à M. Xcoder
Essayez-le en ligne!
la source
\
? En outre, vous pouvez produire une liste de listes de chaînes de longueur 1, comme je le fais dans ma solution, par l'OP.CJam , 81 octets
Essayez-le en ligne!
la source