Pour célébrer le bon vieux bloc - notes , nous allons traiter les retours chariot et les sauts de ligne comme ce qu'ils signifiaient à l'origine, plutôt que pour ce qu'ils sont (ab-) utilisés aujourd'hui.
Étant donné une chaîne constituée de flux ASCII imprimable plus ligne (␊, LF, esc \n
, 0A hexagonale, 10 décembre) et le retour chariot (␍, CR, esc \r
, hex 0D, 13 décembre), la cause essayer en ligne pour montrer comment les caractères imprimables serait positionné s'il était imprimé sur une imprimante qui prend littéralement ces deux caractères de contrôle:
- après un saut de ligne, continuez d'imprimer une ligne plus bas
- lors d'un retour chariot continuer l'impression à partir du bord gauche
- plusieurs retours chariot consécutifs se comportent comme un seul retour chariot
Du fait que les appareils modernes rencontrent des problèmes de surcharge , une exécution d'un ou plusieurs retours chariot ne se produira jamais, sauf au début de l'entrée, sans au moins un saut de ligne précédent et / ou suivant. Cependant, deux séries de retours chariot peuvent être séparées par un saut de ligne unique.
Toute quantité d'espace blanc de fin supplémentaire est acceptable, à la fois sur le côté droit de toutes les lignes et en dessous du texte entier, tant qu'au moins la quantité d'espace blanc donnée dans l'entrée est préservée.
Exemples (utilisation de \n
et \r
pour le saut de ligne et le retour chariot)
Lorem ipsum dolor sit amet,
Lorem ipsum dolor sit amet,
consectetur adipiscing\nelit, sed
consectetur adipiscing
elit, sed
do eiusmod\r\ntempor incididunt\n\n ut labore
do eiusmod
tempor incididunt
ut labore
et dolore\n\rmagna \r\r\naliqua. Ut
(remarquez les espaces de fin)
et dolore
magna
aliqua. Ut
\nenim ad minim veniam,\n\r quis nostrud
enim ad minim veniam, quis nostrud
\rexercitation\r\n\rullamco laboris\n\r\nnisi ut aliquip ex\n\n\rea commodo consequat.\n\n
exercice ullamco laboris nisi ut aliquip ex ea commodo conséquat.
stty -onlcr;cat
.Réponses:
Fusain , 10 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Désactivez le rembourrage droit.
Boucle sur l'entrée.
Imprime le caractère actuel. Cela gère automatiquement
\n
(que Charcoal traite comme\v
dans ce contexte) mais Charcoal se traduit\r
par\r\n
, donc ...... recherchez un
\r
...... et si c'est le cas, remontez d'une ligne.
la source
l
drapeau de votre lien TIO?Rubis ,
2417 octetsEssayez-le en ligne!
Il ne fonctionne pas sur TIO, mais fonctionne sur la console Linux.
la source
tr "
je pense.\n
s\v
lorsqu'ils sont exécutés dans une console Linux.Java 10,
211207206 octetsEssayez-le en ligne.
Explication:
Ancienne réponse avant la modification du défi
151148 octets :Explication:
Ne fonctionne pas sur TIO, fonctionne sur l'invite de commandes Windows:
la source
JavaScript (Node.js) , 85 octets
Essayez-le en ligne!
la source
Python 2 ,
150128122104103 octetsEssayez-le en ligne!
Enregistré:
la source
l,n,i=[l,l+c,l+' '*i*n+c,n,1,0,0,i,i+1]['\r\n'.find(c)%3::3]
à peine plus court.C (gcc) ,
10094 octetsSuppose un codage ASCII (
'\r'==13
,'\n'==10
); ajuster pour convenir à d'autres systèmes.Essayez-le en ligne! (nécessite Javascript)
Version lisible
c
est la position actuelle de la colonne;d
est le nombre d'espaces qui doivent être insérés avant un caractère imprimable. Les deux sont supposés être nuls à l'entrée de la fonction.Programme de test
la source
char
s sont justeint
s petits , ils devraient être interchangeables (en théorie). Peutgcc
- être fera un casting implicitec,d
. Votre fonction devrait - sans autre code de nettoyage - pouvoir s'exécuter plusieurs fois. Vous devrez donc probablement ajouter unc=d=0
.Python 3 ,
10194 octetsBasé sur la réponse de TFeld .
Essayez-le en ligne!
Non golfé
la source
Nettoyer ,
9291 octets-1 merci à Laikoni!
Remarque:
\
in\r
est omis de bytecount car Linux CG gère littéral\r
et\n
s.Remarque: Windows CG requiert
\n
et doit\r
être échappé, donc +3 s'il doit s'exécuter sur Windows.Essayez-le en ligne!
Une application partielle de
? :: Int [Char] -> [Char]
avec 0 comme premier argument initial. Cela descend à travers chaque caractère en gardant une trace du nombre de personnes traversées, le décompte se réinitialise lorsqu'il rencontre un retour chariot et lorsqu'il rencontre une nouvelle ligne, il ajoute des espaces égaux au nombre de caractères traversés à ce point.la source
?_[]=[]
possible?_ e=e
.Haskell ,
9387 octetsEssayez-le en ligne!
Solution assez simple. # est une fonction d'infixe qui crée récursivement la sortie un caractère à la fois tout en conservant un compteur de position de caractère (n) et un indicateur pour quand ajouter des espaces après une nouvelle ligne (x).
la source
c
, utiliser à lal$r
place dec 0 0r
etc _ _ e=e
(ou plutôt(_#_)e=e
).