Tarefa
Você receberá uma string na entrada que consiste apenas nos caracteres de a
a z
, ou seja, a entrada corresponderá ao regex /^[a-z]*$/
.
Sua saída deve ser um programa completo no mesmo idioma, cujo código fonte contém a entrada e é uma opção adequada.
Exemplo
Seu programa receberia a entrada abc
e a saída:
...abc...
O acima deve ser um programa completo no mesmo idioma que não requer entrada e saída:
...abc...
isto é, ele próprio sai.
Pontuação
Isso é código-golfe . A resposta mais curta em bytes vence.
Respostas:
Python 3,
5761 bytesPega um quine básico python 3 daqui e substitui o nome da variável pela entrada.
Nota: Como foi salientado pelo Hyper Neutrino em comentários, este não funciona para palavras-chave reservadas comofor
,if
, etc.O acréscimo de um caractere que nenhuma das palavras-chave reservadas termina com
'x'
um número como esse ou qualquer número corrige isso. (Ørjan Johansen).fonte
"for"
ou qualquer outra palavra reservada em Python.'x'
.Geléia , 9 bytes
Gerador
Experimente online!
Como funciona
Quine
Se a entrada for
quine
, o seguinte programa será gerado.Experimente online!
Como funciona
Este é o padrão Jelly quine. Primeiro,
define o argumento esquerdo e o valor de retorno para a sequência
"quine\nØv"
.Em seguida,
Ṙ
imprime uma representação de sequência (o código do bloco anterior) e retorna a sequência inalterada.Depois,
v
pega o argumento esquerdo e o passa como entrada para o programa JellyEm todos os programas Jelly, apenas o link principal (definido na última linha) é executado, portanto a primeira linha é totalmente ignorada.
Por fim,
Øv
define o valor de retorno como"Ṙv"
, que é impresso implicitamente quando o programa externo é concluído.fonte
Haskell , 51 bytes
q
pega uma string e retorna uma string.Experimente online!
Exemplo de saída para
putStr$q"test"
:Experimente online!
fst
para extrair o texto principal.show
para transformar toda a tupla em uma string.mappend
para combinar as duas funções anteriores. Convenientementemappend
em duas funções, fornece uma função que aplica cada função ao seu argumento e combina os resultados commappend
o tipo de resultado (aqui concatenação de cadeias).fonte
Subcarga , 14 bytes
Experimente online!
Use como
(test)(~aSaS(:^)S):^
- que é em si uma solução.Como funciona
(test)
e(~aSaS(:^)S)
são literais de seqüência de caracteres, então coloque-se na pilha, com o último no topo.:
duplica a(~aSaS(:^)S)
string no topo da pilha e^
executa seu conteúdo como um subprograma.~
troca os dois principais elementos da pilha, agora(test)
está no topo .a
envolve(test)
entre parênteses extras.S
pega a corda((test))
no topo da pilha e a imprime sem os parênteses externos (que são apenas sintaxe literal).aS
imprime o restante(~aSaS(:^)S)
na pilha da mesma forma (com parênteses).(:^)S
imprime a final:^
.fonte
)(
como entrada, eu acho.a
-z
.Subcarga , 14 bytes
Experimente online!
Uma abordagem diferente da outra resposta do Underload; ao invés de ser um quine, ele constrói um quine. Curiosamente, ele sai com o mesmo número de bytes. Esta é uma função que leva seu argumento da pilha e produz para a saída padrão.
Explicação
A função resultante é assim:
Em outras palavras, ele imprime uma string literal contendo a si mesma, seguida por
:^
. Isso é claramente um problema (porque o que acabou de ser impresso é o mesmo que o código que executamos para executá-lo).fonte
a
, desde que não se importe com o erro de falha de segmentação impresso no stderr quando a entrada contivera
.(
ser um caractere que apareça na entrada, todos os programas necessariamente não farão nada ou travarão. Eu nem acho isso específico para o TIO; o programa é inválido, mas já produziu a saída desejada no momento em que falha.V , 9 bytes
Experimente online!
Essa é uma modificação do padrão V quine e estou orgulhoso de que este seja apenas um byte a mais.
Hexdump:
Explicação:
Então, a gravação para implicitamente e é reproduzida. Isso irá gerar a seguinte saída:
Como
j
interromperá a reprodução da macro, nadaHello
será executado.fonte
Python 2, 38 bytes
Embora a entrada seja necessária apenas para oferecer suporte
a-z
, isso deve funcionar com qualquer entrada de linha única que não contenha bytes NUL.Experimente online
Para entrada,
abc
a solução resultante é:Experimente online
fonte
RProgN 2 , 15 bytes
Explicado
Usando o formato
onde
%q
está a entrada qouted, constrói uma quantidade do saborque é um quine RProgN2 padrão,
{']C'.}]C
que, antes de concluído, anexa e destrói a sequência de caracteres inserida.Experimente online!
fonte
Retina , 14 bytes
A contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
Para entrada
x
, isso gera:Explicação
A saída é uma pequena modificação do padrão quine . Simplesmente usamos a regex em
|x
vez da regex vazia. Como a correspondência|
ainda permite (e prioriza) e a correspondência vazia, a funcionalidade em si não é afetada e, comox
sempre conterá letras, é garantida a própria sintaxe regex válida.Imprimir isso realmente usa uma técnica que é semelhante ao próprio quine. Para evitar a duplicação do quine, inserimos
¶\(*S1`|
apenas uma vez no início da string. Isso é exatamente metade do código fonte. Para imprimi-lo duas vezes sem avanço de linha, usamos a configuração\(\
, que agrupa o programa inteiro em um grupo e cria o próprio palco, bem como o grupo que o contém, imprime o resultado sem avanço de linha.fonte
Japt , 14 bytes
Teste online! Para uma entrada de
abc
, saídasque produz a si próprio. Teste online!
Explicação
Esta é uma extensão do padrão Japt com capacidade de carga útil:
A única diferença é que anexamos
ª`abc
no final, que em JavaScript é basicamente||"abc"
. Como o resultado da primeira parte é sempre uma string não vazia (verdade), o||
nunca é executada.Existem várias versões alternativas do mesmo comprimento:
fonte
CJam ,
1614 bytesExperimente online!
Como funciona
Que produz algo parecido
"`_~\"test\";"`_~"test";
.fonte
JavaScript, 21 bytes
fonte
Perl 5 , 35 bytes
Experimente online!
fonte