(inspiré par cette question SO )
On vous donne en entrée un seul entier positif n .
En aussi peu de caractères que possible, sortez une fusée en art ASCII avec une tête, une queue et un corps composé de n segments. Il ne doit pas y avoir d'espaces de fin ni de nouvelles lignes.
La tête et la queue de la fusée sont toujours les mêmes pour toute valeur de n . Le corps se compose de deux types de segments différents qui alternent. Les exemples devraient clarifier la structure de la fusée.
Sortie pour n = 1:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Sortie pour n = 2:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Sortie pour n = 3:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
code-golf
ascii-art
kolmogorov-complexity
Absinthe
la source
la source
Réponses:
CJam,
6763 caractèresCela devrait fonctionner dans l' interpréteur en ligne .
Comment ça fonctionne
Après avoir poussé la chaîne Unicode, l'extrait de code
convertit la chaîne de base 60000 en base 127, convertit en chaîne et évalue le résultat.
Le code qui est exécuté est le suivant:
la source
CJam, 121 octets
Essayez-le en ligne
Prend l'entrée n via STDIN.
J'ajouterai une explication à un moment donné plus tard. Fondamentalement, ce n'est qu'un tas de boucles d'une manière très naïve. Pour alterner entre les deux parties du corps différentes, j'ai une boucle imbriquée sur la partie et une boucle sur
0
et1
. Ensuite, j'ajoute simplement l'itérateur externe et l'itérateur interne, et j'utilise leur parité pour choisir entre un triangle pointant vers le haut ou vers le bas.la source
java.util.NoSuchElementException
copie + coller le code (en montrantLri
)Rubis, 203
Non golfé
Je pense que dans ce cas, il est avantageux d'avoir une version non golfée.
Explication
Je doute que ce soit presque efficace, mais c'était quand même amusant.
ARGV
.h
contient la "tête" et la "queue" de la fusée,r
contient les "crêtes" qui séparent les différentes parties de la fuséem
etp
sont les parties supérieure et inférieure du "corps" de la fusée.Array
["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]
et en prenant les premiers3*n
éléments.puts
s'assure que tout a sa propre ligne.la source
Python, 120 + 77 + 1 = 198 caractères
Cela a fini par être la mauvaise approche, mais j'avais déjà fini quand Martin a posté sa réponse.
Nécessite un fichier
R
(+1 pour le nom de fichier) de 77 octets, que vous pouvez générer comme suit:la source
JS, WIP, 252b ou 173 caractères
Ce n'est pas une fonction, vous devez donc définir la valeur de n au début (3 ici), puis l'exécuter dans la console ou dans nodeJS.
Voici la version 252b:
Et voici la version 173 caractères (en utilisant http://xem.github.io/obfuscatweet/ )
la source
JavaScript (E6) 252
257Surutilisation de string.repeat
la source
Javascript (ES3): 243
219octetsla source
SyntaxError: function statement requires a name
:, 2: sortie incorrecte, les segments de corps ne devraient pas être tous égaux (impairs et pairs sont différents)