Escaliers à cordes
Avertissement: c'est le premier défi que je propose. Tous les commentaires sont les bienvenus. S'il s'agit d'un doublon, veuillez le signaler.
Voici un lien vers le post sandbox.
Objectif
Le but de ce défi est d'imprimer, à l'aide d'une chaîne et d'un entier, la chaîne en blocs de la taille de cet entier. Si un mot a plus de caractères que la taille d'un bloc, imprimez-le dans un motif "d'escalier" descendant.
Règles
- Le "motif d'escalier" mentionné ci-dessus signifie que, pour chaque bloc d'un même mot, ce bloc doit commencer exactement là où se termine le bloc au-dessus. Vérifiez les cas de test (ou demandez) si vous avez des questions.
- Si un mot est divisé en plusieurs blocs, le mot suivant doit être imprimé avec un nombre suffisant d'espaces, c'est-à-dire qu'il doit être séparé du bloc le plus bas du mot précédent par exactement un espace. Vérifiez les cas de test (ou demandez) des éclaircissements.
- Vous pouvez supposer que la chaîne d'entrée ne sera composée que de caractères ASCII imprimables. De plus, il n'aura pas plusieurs espaces blancs consécutifs.
- Vous pouvez également supposer que l'entier sera toujours dans la plage [1, + ∞).
- Les espaces blancs de fin ou les nouvelles lignes sont autorisés.
- Vous pouvez utiliser n'importe quelle méthode raisonnable pour les E / S.
- Les échappatoires standard s'appliquent.
- C'est le code-golf , donc le code le plus court (en octets, par langue) gagne. Après une semaine (environ), j'accepterai la réponse globale la plus courte.
Cas de test
(String, Integer) => (Output)
"This is a large string", 3 => Thi is a lar str
s ge ing
"This is an even larger string!", 2 => Th is an ev la st
is en rg ri
er ng
!
"Ooooh dear, what a big string you have!", 3
=> Ooo dea wha a big str you hav
oh r, t ing e!
"Staphylococcus saprophyticus", 4 => Stap sapr
hylo ophy
cocc ticu
us s
"I hope you find this challenge interesting", 2
=> I ho yo fi th ch in
pe u nd is al te
le re
ng st
e in
g
"Well, this test case looks kinda pointless now doesn't it?", 15
=> Well, this test case looks kinda pointless now doesn't it?
"This one looks a lot more interesting!", 1 => T o l a l m i
h n o o o n
i e o t r t
s k e e
s r
e
s
t
i
n
g
!
"Keep in mind, people: 'Punctuation! Does! Matter!'", 2
=> Ke in mi pe 'P Do Ma
ep nd op un es tt
, le ct ! er
: ua !'
ti
on
!
Réponses:
Fusain , 22 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
* Plus précisément, "déplacez-vous deux fois au début de la ligne suivante, mais comme si le canevas avait été tourné". Edit: Entre ce défi posé et cette réponse acceptée, Charcoal a en fait acquis un moyen de diviser une chaîne en paires de caractères, réduisant le code de 16 octets:
F⪪θ «↑⸿⸿F⪪ιIη«κ↙
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:la source
SOGL V0.12 ,
282726 octetsEssayez-le ici!
J'ai mis
‰
en œuvre tout en faisant cela, mais la documentation pour cela existait auparavant.Explication:
la source
Javascript ES6,
187183174166163148145143141140138 octetsla source
<"!"
au lieu de==" "
.C #, 200 octets
Où la chaîne est spécifiée par i et la taille est spécifiée par s .
Par exemple
Fondamentalement, la première partie Regex.Split utilise des espaces blancs pour diviser la phrase en mots, et le Regex.Matches divise chaque mot en morceaux spécifiés par s . Le bloc est écrit à la position du curseur (x, y) où Y est défini sur 0 pour chaque nouveau mot, et x est incrémenté de 2 pour le premier bloc d'un mot et ensuite (s-1) pour chaque bloc.
x commence sa vie à -2 pour s'assurer que sa première utilisation est définie sur 0.
Je ne suis pas assez bien informé dans les anecdotes C # pour pouvoir le rendre plus petit, mais je pense qu'il peut probablement l'être.
la source
Python 2 ,
203199 octetsEssayez-le en ligne!
la source
' '*(i/l*(l-1))
peut êtrei/l*~-l*' '
.Perl 5, 59 octets
55 octets code + 4 pour
-ai
.Remarque: les
\x1b
s sont desESC
caractères littéraux , mais échappés ici pour un copier-coller facile.Ce script utilise des séquences d'échappement ANSI et nécessite une entrée via l'
-i
indicateur qui n'est pas standard. Si l'un ou l'autre n'est pas acceptable, veuillez m'en informer et je serai mis à jour.Exemple d'exécutions
la source