Una muñeca rusa de anidación, más comúnmente conocida como muñeca Matryoshka , es una muñeca que contiene una versión más pequeña de sí misma, que luego contiene otra versión más pequeña de sí misma, que contiene una versión más pequeña de sí misma, que contiene una versión más pequeña de sí misma, que contiene una versión más pequeña de sí mismo ... hasta que finalmente, la última está vacía. Un ejemplo:
Hoy su objetivo es emular esta tradición rusa escribiendo un programa o función que, cuando se contiene N veces, se imprimirá conteniendo copias N-1 de sí mismo veces.
Por ejemplo, el programa de muñeca abcd
tendrá el programa N = 3 abababcdcdcd
, que imprimirá el programa N = 2 ababcdcd
, que imprime el programa N = 1 original abcd
, que finalmente imprime N = 0, que está vacío. Teóricamente, esto debería funcionar para cualquier valor razonable de N.
Reglas:
- Aquí hay un programa TIO para ayudar a generar programas de muñecas basados en su programa
- Se aplican las reglas estándar de Quine
- Se aplican lagunas estándar
- 'Contiene' significa directamente en el centro de la versión anterior, por lo que su solución debe tener un número par positivo de bytes. Un programa de longitud 10 tendrá una copia del original insertada después del quinto byte, luego otra después del décimo byte, etc.
- Se permite un espacio en blanco al final en la salida
- Como se trata de código de golf , su objetivo es hacer que su programa N = 1 sea lo más breve posible.
- Se agradecería una explicación de su código
fuente
N
se mide el tamaño del código?Respuestas:
Baja carga , 4 bytes
N = 1: Pruébelo en línea.
N = 2: Pruébelo en línea.
N = 3: Pruébelo en línea.
Explicación:
Se explica por sí mismo, pero lo agrego de todos modos.
(...)S
imprime cualquier cosa entre paréntesis en STDOUTfuente
JavaScript,
3632 bytesAprovecha el hecho de que
Function.prototype.toString()
no toma argumentos y, por lo tanto, ignorará cualquiera que se le pase.En parte inspirado por la solución de user202729 .
Intentalo
fuente
JavaScript (Node.js) , 46 bytes
Programa completo Entonces
console.log
es necesario.Use una idea de esta respuesta para guardar algunos bytes.
Pruébalo en línea! ¡Pruébelo en línea dos veces! ¡Pruébelo en línea, tres veces!
Mi enfoque es similar al utilizado en la respuesta de Kevin Cruijssen , encontrar una estructura anidable (una función en este caso).
fuente
Jalea , 16 bytes
Pruébalo en línea!
Doblado: ¡ Pruébelo en línea!
Triplicado: ¡ Pruébelo en línea!
Jelly no tiene ninguna estructura anidable, pero sus literales de cadena se terminan automáticamente.
Intentaremos diferentes enfoques para ver si pueden ser más cortos.
fuente
DipDup , 2 bytes
Empuja la lista en la pila, y la imprime sin los corchetes más externos.
N = 1: ¡ Pruébelo en línea!
N = 2: ¡ Pruébelo en línea!
N = 3: ¡ Pruébelo en línea!
fuente
dc , 4 bytes
Similar a algunas otras respuestas, dado que las cadenas
dc
tienen delimitadores start ([
) y end (]
) (es decir,"
no realizan ambas tareas, etc.), son anidables sin ningún esfuerzo real.p
imprimir.N = 1: ¡ Pruébelo en línea!
N = 2: ¡ Pruébalo anidado!
N = 3: ¡ Pruébalo ahora!
fuente
Tcl , 12 bytes
Pruébalo en línea!
Es solo otro idioma que también tiene esto.
fuente