Ecrivez un programme ou une fonction qui prend un nombre entier positif et imprime ou renvoie une pile de ce nombre de tortues de type ASCII , où chaque tortue est plus grande que celle située au-dessus.
Plus précisément, si l'entrée est 1
, la sortie doit être:
__
/,,\o
Si l'entrée est 2
:
__
o/,,\
____
/,__,\o
Si l'entrée est 3
:
__
/,,\o
____
o/,__,\
______
/,____,\o
Si l'entrée est 4
:
__
o/,,\
____
/,__,\o
______
o/,____,\
________
/,______,\o
Si l'entrée est 5
:
__
/,,\o
____
o/,__,\
______
/,____,\o
________
o/,______,\
__________
/,________,\o
Et ainsi de suite dans le même schéma pour des entrées plus importantes.
Notez que:
- La tête
o
de la tortue inférieure est toujours à droite. Les têtes des tortues ci-dessus alternent alors d'avant en arrière. - Aucune ligne ne peut avoir d'espaces de fin.
- Les espaces de début superflus ne sont pas autorisés. (Par exemple, le dos de la tortue du bas devrait être au début de la ligne.)
- Un seul retour à la ligne facultatif est autorisé.
Le code le plus court en octets gagne.
code-golf
string
ascii-art
kolmogorov-complexity
Les passe-temps de Calvin
la source
la source
,________,
Quand quelqu'un dit quelque chose qui n'a aucun sens.Réponses:
Lot, 256 octets
Notez que la ligne 1 a un espace de fin et la ligne 4 a deux espaces de fin.
i
contient donc uneecho
commande avec la quantité d'indentation appropriée pour chaque tortue. Pendant ce tempsu
contient le nombre de traits de soulignement chez les tortues en alternance. Une tortue principale impaire est spéciale-cased et ensuite le reste des tortues sont sorties par paires.la source
C, 131 octets
Essayez-le en ligne.
Définit une fonction qui imprime les tortues.
Abuse fortement des spécificateurs de largeur et de précision de printf pour obtenir l'espacement et répéter les traits de soulignement. Chaque tortue est imprimée en un seul
printf
appel:J'ai aussi une version différente de 144 octets avec les espaces blancs supprimés:
la source
,_,
dans votre code.Ruby, 100 octets
Solution récursive Essayez-le en ligne!
la source
05AB1E, 45 octets
Essayez-le en ligne
la source
G
boucle était déjà dans la version d'août 2016, mais si c'était le cas, celaLv
peut êtreG
et les deuxy
peuvent êtreN
pour -1 octet.V ,
57, 5349 octetsPuisque cela contient des caractères non imprimables, voici un hexdump:
Essayez-le en ligne!
Explication:
la source
0
et ci-dessous.input > 10
. Sur une note de côté, je l'ai accidentellement complètement cassé avec l'entrée0 41c14
. Je ne sais pas si j'ai cassé le code ou le coureur.-1
comme une chaîne qu'il ne peut pas prétendre être un nombre. Heureusement, je n'ai pas à les gérer.Perl, 92 octets
Code 91 octets +1 pour
-n
.Requiert
-E
sans frais supplémentaires.Usage
Merci à @Dada pour -9 octets pour son travail renouvelé!
la source
perl -nE 'for$i(1..$_){say$"x$_._.($v=_ x(($i-1)*2))._.$/.$"x(--$_-1).($_%2?o:$_?$":"")."/,$v,\\".($_%2?"":o)}'
. J'ai aussi essayé d'avoir moins de 100 ans mais je n'ai pas ...Cheddar , 105 octets
la source
Retina ,
979188 octetsLe nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
la source
Python 2, 116 octets
la source
lambda m:for i in r...
input()
R , 150 octets
plus proprement (ajoute un octet)
La structure de base s’appelle elle-même de manière récursive - elle indique à la fois le numéro final à appeler et le niveau actuel. Commence avec une valeur par défaut pour y = 1, de sorte qu'il ne nécessite qu'une seule variable pour l'appel initial. Définit rapidement deux valeurs fréquemment utilisées. Ensuite, il répète tout le nombre de fois nécessaire.
Chacune de celles-ci teste implicitement s'il faut ajouter la tête à droite ou à gauche et la placer de manière appropriée.
la source
#
avant le titre dans l'éditeur de démarques pour le formater comme les autres réponses.TSQL, 189 octets
Maintenant, avec acceptation des entrées - grâce à @PatrickRoberts
Violon
la source
i
au prix de 4 octetsC,
328238234215 octets:Une implémentation récursive utilisant beaucoup de formatage de chaîne et la
memset
fonction intégrée . Je vais essayer de jouer au golf avec le temps autant que je peux.C il en ligne! (Idéone)
la source
17
et au-delà, la logique casse pour une raison, et donc, les tortues aussi. J'essaie actuellement de comprendre ce qui ne va pas.'c'
) par leur code ASCII pour ne conserver qu'un caractère chacun :)Java 1.7, 238 octets
Un ensemble de deux fonctions: la première itération sur la saisie (nombre de tortues), la seconde facilite la construction récursive d'une séquence de caractères répétés (c'est-à-dire les espaces de début, le dos et le ventre des tortues).
Ungolfed:
Exécuter! (Idéone)
J'ai supposé que nous pouvions exclure la définition de classe du nombre d'octets.
Je pourrai peut-être jouer un peu plus loin en inversant l'ordre d'itération de la boucle (construction à partir de la tortue du bas) et / ou en me rendant complètement récursif, à l'instar de certaines des autres réponses.
Note à moi-même: il manque vraiment à Java un raccourci intégré pour répéter n caractères ...
la source
Python,
137120113110 octetsUngolfed:
Les têtes étaient difficiles.
la source
('o','')[b]
, vous pouvez faire'o'*(1-b)
(et'o'*b
pour('o','')[1-b]
).'0'*-~-1
est plus court que'0'*(1-b)
F #,
218207202196187 octets.Rasé la plupart de ces octets en ajoutant des variables
La logique est volée sans vergogne de cette réponse en Python
Essayez-le en ligne.
la source
CJam , 88 octets
Crée d'abord la plus grosse tortue (sinon, sur quoi se placerait une autre tortue?), Puis réduit progressivement la taille jusqu'à la fabrication de la plus petite. Fonctionne pour tout entier supérieur à 0.
Essayez-le en ligne!
la source
Python 2.7,
255238236 octetsMême si cela perd aux deux autres solutions Python 2, j’ai aimé mon approche récursive:
edit1: supprimé quelques octets en éliminant certains remplacements
edit2: rasé 2 octets en enregistrant les traits de soulignement en tant que variable
la source
Python 2, 147 octets
Essayez-le en ligne
la source
Python 2.7,
139114113130 octetsJ'ai aussi aimé l'approche récursive d'Iguanodon, alors voici une tentative légèrement plus courte.
MODIFIER
Un puissant
25269 octets joué au golf en raison de quelques conseils fantastiques de la pastèque destructible. Merci beaucoup!Je pense que c’est peut-être la réponse la plus courte en Python :-)la source
i=input();t(i)
partie, parce que vous êtes autorisé à simplement avoir une fonction.PowerShell ,
10510097878584 octets-21 octets grâce à mazzy, le fou
Essayez-le en ligne!
Décale intelligemment les variables en utilisant
$_--
pour éviter d'utiliser des($_+1)
blocs répétés pour économiser plusieurs octets. Il convertit également l'argument unique en une chaîne qui est ensuite convertie en un entier lorsqu'il est utilisé dans une plage dans laquelle parcourir le nombre de tortues. La plus grosse astuce consiste maintenant à ce que le 2ème niveau d'espacement d'une tortue n'augmente que tous les rangs en soustrayant$_%2
(c'est-à-dire 0 si pair, 1 si impair) du nombre_ligne actuel.Sinon, il faut beaucoup d'indexation pour calculer correctement
_
etcompter, y compris un compteur de décalage sous la forme de
$i++
, et maintenant, un seul index de liste pour placer la tête du bon côté.la source
ES6 (JavaScript), 140 octets
Code
Tester
la source
Toile , 26 octets
Essayez-le ici!
la source