Uma boneca russa, mais comumente conhecida como boneca matryoshka , é uma boneca que contém uma versão menor de si mesma, que contém outra versão menor de si mesma, que contém uma versão menor de si mesma, que contém uma versão menor de si mesma, que contém uma versão menor de si mesma ... - até que finalmente a última esteja vazia. Um exemplo:
Hoje, seu objetivo é imitar essa tradição russa escrevendo um programa ou função que, quando contiver N vezes, será impresso contendo N-1 cópias de si mesmo vezes.
Por exemplo, o programa boneca abcd
terá o programa N = 3 abababcdcdcd
, que imprimirá o programa N = 2 ababcdcd
, que imprime o programa N = 1 originalabcd
, que finalmente imprime N = 0, que está vazio. Teoricamente, isso deve funcionar para qualquer valor razoável de N.
Regras:
- Aqui está um programa TIO para ajudar a gerar programas de boneca com base no seu programa
- Aplicam-se as regras padrão do Quine
- Aplicam-se brechas padrão
- 'Contém' significa diretamente no centro da versão anterior; portanto, sua solução deve ter um número par positivo de bytes. Um programa de tamanho 10 terá uma cópia do original inserida após o quinto byte, depois outra após o décimo byte, etc.
- Um único espaço em branco à direita é permitido na saída
- Como esse é o código-golfe , seu objetivo é tornar o seu programa N = 1 o mais curto possível.
- Uma explicação do seu código seria apreciada
fonte
N
é o tamanho do código medido?Respostas:
Subcarga , 4 bytes
N = 1: experimente online.
N = 2: Experimente online.
N = 3: experimente online.
Explicação:
Auto-explicativo, mas eu adiciono de qualquer maneira.
(...)S
imprime qualquer coisa entre parênteses em STDOUTfonte
JavaScript,
3632 bytesAproveita o fato de
Function.prototype.toString()
não ter argumentos e, portanto, ignorará os que são passados para ele.Parcialmente inspirado na solução de user202729 .
Tente
fonte
JavaScript (Node.js) , 46 bytes
Programa completo. Então
console.log
é necessário.Use uma idéia desta resposta para salvar alguns bytes.
Experimente online! Experimente online duas vezes! Experimente online três vezes!
Minha abordagem é semelhante à usada na resposta de Kevin Cruijssen , encontre uma estrutura aninhada (uma função neste caso).
fonte
Gelatina , 16 bytes
Experimente online!
Duplicado: Experimente online!
Triplicou: Experimente online!
O Jelly não possui nenhuma estrutura aninhada, mas seus literais de string são terminados automaticamente.
Tentará abordagens diferentes para ver se elas podem ser mais curtas.
fonte
DipDup , 2 bytes
Empurra a lista para a pilha e a imprime sem os colchetes mais extremos.
N = 1: Experimente online!
N = 2: Experimente online!
N = 3: Experimente online!
fonte
dc , 4 bytes
Semelhante a algumas outras respostas, como as strings nos delimitadores
dc
start ([
) e end (]
) (ou seja,"
não executam as duas tarefas etc.), elas podem ser aninhadas sem nenhum esforço real.p
imprimir.N = 1: Experimente online!
N = 2: tente aninhado!
N = 3: Experimente o nesteder!
fonte
Tcl , 12 bytes
Experimente online!
É apenas outra linguagem que também tem isso.
fonte