Étant donné l'entrée d'une image d'art ASCII, sortez l'art ASCII en italique.
Pour mettre en italique l'art ASCII:
Insérez zéro espace avant la dernière ligne, un espace avant l'avant-dernière ligne, deux espaces avant l'avant-dernière ligne, etc.
Supprimez tous les espaces blancs de tête supplémentaires qui peuvent avoir été créés. Autrement dit, si chaque ligne a au moins des
n
espaces la précédant, supprimez lesn
espaces du début de chaque ligne.Remplacez tous les
\
s par|
, tous les|
s par/
et tous les/
s par_
. Gardez_
les mêmes existants .L'entrée est garantie pour contenir uniquement les caractères
\|/_
et l'espace.
Par exemple, l'entrée
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
doit sortir
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
qui à son tour, fourni en entrée, sorties
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
qui produirait
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
L'entrée et la sortie peuvent être soit une seule chaîne (avec un retour à la ligne facultatif) ou un tableau de lignes.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
Cas de test supplémentaires:
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
(c'est-à-dire que l'entrée d'une chaîne vide entraîne la sortie d'une chaîne vide)
Réponses:
CJam,
4338 octetsNécessite que l'entrée soit complétée par un rectangle.
Essayez-le en ligne!
Explication
la source
G
alors la transformation la réduira au sommet.Pyth, 32
Essayez-le ici ou exécutez la suite de tests
Chaque ligne a plusieurs espaces de fin. Cela fonctionne en appliquant
.r
quelle est la rotation intégrée à chaque ligne de la chaîne. La rotation prend chaque caractère de la chaîne qui correspond à l'un dans l'autre argument"\|/__"
et le remplace par le caractère suivant. Le double trait de soulignement empêche bien les traits de soulignement de devenir des barres obliques inverses. Les chaînes sont également remplies en fonction de leur index.Une fois cela fait, les lignes sont zippées ensemble, puis nous filtrons chaque colonne qui ne contient que des espaces, jusqu'à ce que l'une d'entre elles ne le fasse pas. Ensuite, nous décompressons et nous rejoignons sur les nouvelles lignes.
la source
MATL ,
383329 octetsLes lignes de sortie ont des espaces de fin pour correspondre à la ligne la plus longue (cela est autorisé par le défi).
L'entrée est un tableau de cellules (liste) de chaînes. Le tableau utilise des accolades et les chaînes utilisent des guillemets simples, comme suit (cliquez sur chaque lien pour l' essayer en ligne! ).
Premier exemple :
Deuxième exemple :
Troisième exemple :
Explication
Le tableau est initialement inversé. Chaque chaîne est traitée dans une boucle et la chaîne modifiée est poussée sur la pile. Le traitement consiste à remplacer les caractères et à ajouter plusieurs espaces. Le nombre d'espaces est égal au nombre actuel d'éléments dans la pile (grâce au fait que le tableau a été inversé).
Après la boucle, les chaînes sont collectées dans un tableau, qui est retourné, converti en un tableau de caractères 2D et éliminé les espaces de début indésirables: les espaces de tête qui sont présents dans toutes les lignes du tableau de caractères 2D.
la source
JavaScript (ES6),
171149148 octetsAccepte et renvoie des lignes sous forme de tableau de chaînes.
Edit: enregistré 22 octets grâce à @ user81655. 1 octet enregistré en réalisant que l'entrée est limitée aux 5 caractères
\|/_
et à l'espace.la source
replace
les s peuvent être combinés en.replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)])
,match(/ */)
peuvent êtrematch` *`
, les deux premiersmap
s peuvent être combinés ena.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),...
, les parenthèses externes ((a=...)
) peuvent maintenant être supprimées. 149 octets:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
replace
.)Dyalog APL (anciennes versions),
2348 octetsL'ajustement des espaces blancs coûte cher:
Cela nécessite
⎕ML←0
, qui était par défaut jusqu'à récemment .la source