Dans ce défi, vous devez apporter de l'art ASCII (qui sont généralement 2D) à la 3D!
Comment?
comme ça,
X X DD
X D D
X X DD
à...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Alors comment on fait ça ?
Compte tenu de l'art ascii et N
, répétez cette N
fois.
- pour chaque personnage (nous l'appellerons ainsi
A
): - laissez -
B
être le caractère qui est exactement 1 à droite et 1 à partirA
- si
B
est un espace ou n'est pas défini: - réglé
B
surA
.
Spécifications
- La première entrée peut être une chaîne avec des caractères de nouvelle ligne ou une liste de chaînes représentant l'art ASCII 2D.
- Vous êtes autorisé à utiliser
%END%
pour marquer la fin de l'entrée, mais cela n'est pas obligatoire. - La deuxième entrée sera
N
. Ce sera un entier positif. - toutes les lignes des cordes auront la même longueur.
Exemples
Contribution: ("###\n###",1)
Production:
###
####
###
Règles
Les règles de base du code-golf s'appliquent.
aussi, si vous avez des questions, n'oubliez pas de demander dans les commentaires!
Réponses:
Perl, 81 octets
75 octets code + 6 pour
-i -n0
.Notez que les
\e
caractères sont ASCII\x1b
mais\e
sont utilisés pour faciliter les tests.Veuillez noter que cette solution utilise des séquences d'échappement ANSI et nécessite un terminal compatible, ainsi que l'utilisation de l'
-i
argument de ligne de commande pour transmettre le nombre de «dimensions» que vous souhaitez.Usage:
Dans un terminal compatible Linux, exécutez d'
PS1=
abord pour vous assurer que votre invite ne remplace pas l'image affichée.la source
CJam,
2524 octetsUn bloc sans nom qui attend une liste de chaînes et le nombre de répétitions sur la pile et laisse une nouvelle liste de chaînes à la place.
Testez-le ici. (Comprend un wrapper de test qui lit la chaîne de STDIN pour plus de commodité.)
Explication
la source
S
fonctionne pas pour l'espace initial? Est-il également autorisé d'utiliser des variables (qui auraient pu être écrasées) dans une fonction?S
ne fonctionne pas, car ilf
serait alors mappé sur cette chaîne à la place. En ce qui concerne les fonctions, je crois, dans les langues "normales", il existe également de nombreuses soumissions de fonctions qui reposent sur des variables globales qui ne sont pas falsifiées entre les invocations.APL, 49 octets
Entrée: vecteur de vecteurs de caractères. Exemple:
Comment ça fonctionne:
↑⍵
transforme l'argument en une matrice de caractères⎕UCS
de char à entier(32∘≠×⊣)
remplacer les espaces (32) par des zéros...⍣⍺⊣
appliquer ⍺ (l'argument de gauche) fois la fonction de gauches←0⍪⍵,0
frontière avec des zéros en haut et à droite l'argument1⊖¯1⌽
faire pivoter 1 vers le haut et 1 vers la droites+(s=0)×
somme à l'original la version décalée mais uniquement au-dessus des zéros de l'original32⌈
retourne les zéros en 32s⎕UCS
de l'entier au charla source
MATL , 24 octets
Le format d'entrée est
Donc, l'autre exemple est
La sortie contient des espaces supplémentaires, ce qui est autorisé par le défi.
Essayez-le en ligne!
Si un tableau de caractères 2D est acceptable en entrée (j'ai demandé l'OP deux fois ...), le premier
c
peut être supprimé, donc 23 octets :Le format d'entrée dans ce cas est (toutes les chaînes ont des longueurs égales, ce qui peut nécessiter un remplissage à droite avec des espaces):
Essayez-le en ligne!
Explication
la source
Convexe , 23 octets
Le nombre d'octets suppose le codage CP-1252.
Un bloc sans nom qui attend une liste de chaînes et le nombre de répétitions sur la pile et laisse une nouvelle liste de chaînes à la place.
Essayez-le en ligne!
Ceci est un port direct de ma réponse CJam à Convex (qui est fortement basé sur CJam). La seule différence est que Convex utilise
Ë
au lieu deer
pour la translittération, économisant un octet. Merci à GamrCorps de m'avoir prévenu.la source
Pyth,
5433 octetsSuite de tests.
la source
;
?;
n'est pas habituel;
dans les langages de programmation.;
est une variable.;
à lambdas ...I
,.?
,V
,F
,;
, (déclarations explicites) très moins, et ils seront remplacés par?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 octets
Accepte et renvoie un tableau de chaînes, ajoute une ligne supplémentaire pour la sortie, garantit que chaque ligne contient au moins un espace, les divise toutes en caractères, boucle en essayant de copier les caractères sur la ligne ci-dessus et la colonne de droite, puis s'appelle récursivement pour terminer la boucle.
la source
Python 2, 116 octets
Je jouerai au golf plus bientôt.
la source
lambda
n'est pas plus court?e
là-dedans. C'est aussiexec
une déclaration, donc elle ne peut pas être dans un lambda.Rubis, 95 octets
Chacun
<Esc>
est un caractère ESC littéral (0x1b
).Usage
Attribuez le lambda à une variable, par exemple
func
.Non golfé
La
forward
séquence d'échappement\e[1C
, déplace le curseur vers l'avant (à droite) d'un espace et le\e[<n>A
déplace vers le hautn
. Fondamentalement, ce code fait imprimer les "couches" d'arrière en avant, en remplaçant les espaces par laforward
séquence pour éviter d'écraser les autres couches par un espace.la source
f=
avant->
dans la version golfée. Supprimez-le pendant -2 octets.