Cette question est inspirée de la question de Kevin Cruijssen .
Maintenant que le tapis est posé, nous voulons le rouler. Votre tâche consiste à écrire un programme qui prend une chaîne et renvoie une spirale faite à partir de cette chaîne (représentant un tapis roulé vu de côté).
La procédure pour une étape de roulement du tapis est la suivante. Il y a un exemple pour illustrer ce que je veux dire. Notez que l'exemple commence par un tapis partiellement roulé pour une meilleure compréhension:
ac
rpet
- séparer la "tête" de la "queue" du tapis: la tête est ce qui a été roulé jusqu'à présent, la queue est ce qui reste à rouler.
Head: ac Tail:
rp et
- Tournez la tête de 90 ° dans le sens des aiguilles d'une montre.
Rotated head: ra Tail (unchanged):
pc et
- si la largeur de la nouvelle tête (ici
2
) est inférieure ou égale à la longueur de la queue (ici2
)- puis placez-le sur la queue
- sinon, le tapis (comme au début de l'étape) était enroulé
New carpet: ra
pc
et
Répétez la procédure autant de fois que nécessaire.
Deux exemples illustrant toutes les étapes du roulement du tapis:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Quelques précisions:
- Vous n'avez pas besoin de montrer toutes les étapes intermédiaires, seulement le tapis roulé (par exemple, si vous trouvez un moyen non itératif de calculer le résultat, c'est parfait). De plus, vous n'avez pas besoin d'imprimer d'espace blanc de premier plan, dans les exemples ci-dessus, je ne les montre que pour aligner les éléments.
- L'entrée est une chaîne, une liste / un tableau de caractères
- La sortie est imprimée sur stdout ou dans un fichier.
- L'entrée est agréable: la longueur est d'au moins 1 caractère et au plus une constante suffisamment petite pour ne pas causer de problèmes, mais vous ne pouvez pas utiliser cette constante dans votre programme; le contenu de la chaîne n'est que de beaux caractères ([a-zA-Z0-9]), encodés à votre guise.
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte. Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Ajoutez également une explication à votre réponse si vous pensez qu'elle est nécessaire.
ProgrammingPuzzlesAndCodeGolf
- la longueur finale de la queue supérieure à 1 m'a déclenché.
print
intérieur d'un lambda
.