Une poupée gigogne russe, plus communément appelée poupée Matriochka , est une poupée qui contient une version plus petite d'elle-même, qui contient ensuite une autre version plus petite d'elle-même, qui contient une version plus petite d'elle-même, qui contient une version plus petite d'elle-même, qui contient une version plus petite de lui-même ... - jusqu'à ce que finalement, la dernière soit vide. Un exemple:
Aujourd'hui, votre objectif est d'imiter cette tradition russe en écrivant un programme ou une fonction qui, lorsqu'elle se contient N fois, s'imprime contenant N-1 copies d'elle-même fois.
Par exemple, le programme poupée abcd
aura le programme N = 3 abababcdcdcd
, qui imprimera le programme N = 2 ababcdcd
, qui imprime le programme N = 1 original abcd
, qui imprime finalement N = 0, qui est vide. Cela devrait théoriquement fonctionner pour toute valeur raisonnable de N.
Règles:
- Voici un programme TIO pour aider à générer des programmes de poupée basés sur votre programme
- Les règles standard de Quine s'appliquent
- Les échappatoires standard s'appliquent
- «Contient» signifie directement au centre de la version précédente, donc votre solution doit avoir un nombre pair d'octets positif. Un programme de longueur 10 aura une copie de l'original insérée après le cinquième octet, puis une autre après le dixième octet, etc.
- Un seul espace de fin est autorisé dans la sortie
- Comme il s'agit de code-golf , votre objectif est de rendre votre programme N = 1 aussi court que possible.
- Une explication de votre code serait appréciée
la source
N
taille de code est mesurée?Réponses:
Sous-charge , 4 octets
N = 1: Essayez-le en ligne.
N = 2: Essayez-le en ligne.
N = 3: Essayez-le en ligne.
Explication:
Explicite, mais je l'ajoute quand même.
(...)S
imprime n'importe quoi entre les parenthèses sur STDOUTla source
JavaScript,
3632 octetsProfite du fait qu'il
Function.prototype.toString()
ne prend aucun argument et ignorera donc tous ceux qui lui sont transmis.Partiellement inspiré par la solution de user202729 .
Essayez-le
la source
JavaScript (Node.js) , 46 octets
Programme complet. Donc
console.log
nécessaire.Utilisez une idée de cette réponse pour économiser quelques octets.
Essayez-le en ligne! Essayez-le en ligne deux fois! Essayez-le en ligne, trois fois!
Mon approche est similaire à celle utilisée dans la réponse de Kevin Cruijssen , trouver une structure emboîtable (une fonction dans ce cas).
la source
Gelée , 16 octets
Essayez-le en ligne!
Doublé: Essayez-le en ligne!
Triplé: Essayez-le en ligne!
Jelly n'a pas de structure emboîtable, mais ses littéraux de chaîne sont terminés automatiquement.
Va essayer différentes approches pour voir si elles peuvent être plus courtes.
la source
DipDup , 2 octets
Il pousse la liste sur la pile et l'imprime sans les crochets les plus extrêmes.
N = 1: Essayez-le en ligne!
N = 2: Essayez-le en ligne!
N = 3: Essayez-le en ligne!
la source
dc , 4 octets
Semblable à d'autres réponses, puisque les chaînes dans
dc
ont des délimiteurs start ([
) et end (]
) (c'est-à-dire qu'elles"
n'exécutent pas les deux fonctions, etc.), elles sont imbriquables sans effort réel.p
imprimer.N = 1: Essayez-le en ligne!
N = 2: Essayez-le imbriqué!
N = 3: Essayez-le nesteder!
la source
Tcl , 12 octets
Essayez-le en ligne!
C'est juste une autre langue qui a aussi cela.
la source