Em esta pergunta eu perguntei-lhe para adivinhar uma Quine anagrama baseado em sua saída. No entanto, parece que ainda não temos uma pergunta sobre o golfe de um anagrama. Portanto, sua tarefa será fazer o menor quine de anagramas possível.
O que é um anagrama quine?
Um anagrama quine é um programa não vazio que imprime um anagrama de seu código fonte, além da fonte original.
Aqui está um exemplo de um anagrama quine no Python 2:
print`'`print`*2'*2`
Você não deve ler sua própria fonte para esse desafio.
code-golf
quine
permutations
Assistente de Trigo
fonte
fonte
Respostas:
Pitão , 2 bytes
Saídas
Experimente online!
fonte
()
é um quine muito mais curto que o bem conhecidojN*2]"jN*2]
?V , 4 bytes
Saídas:
Experimente online!
fonte
i2
?2 -> do the next thing twice
i -> insert the following
> <> ,
987 bytesCom 1 byte de golfe, graças ao @WheatWizard, usando-o
!
e incrementando-o para obter"
Golpeou 1 byte graças a @ ConorO'Brien usando em
#
vez de<!
Experimente online!
Saídas
"#o>-1:
.Explicação
fonte
":1+>o<!
é um pouco mais curto.":1->o#
Brainfuck, 158 bytes
Experimente online!
Pode não ser a versão mais curta, mas pelo menos funciona.
Curiosamente , o código de saída pode realmente ser executado (e termina).
Saída
Explicação
fonte
Python 3, 32 bytes
Imprime
p"r"i"n"t"2(")*p"r"i"n"t"2(")*\n
, saída classificada:\n""""""""""""(())**22iinnpprrtt
fonte
Ruby , 8 bytes
Experimente online!
Isso imprime
Explicação
Isso funciona de maneira semelhante à resposta python na pergunta. Ele fará a string e, em
p*2p*2
seguida, usar Rubyp
imprimirá a representação da string.fonte
p
vez deputs
?! Tanto tempo perdido ...p x
é equivalente aputs x.inspect
JavaScript (ES6),
4032 bytesNão há brincadeira com Function.toString também. Como um bônus, o código dentro da string parece legal. Editar: salvou 8 bytes usando em
+
vez derepeat(2)
.fonte
*2
vez de.repeat(2)
, isso não funciona?*
para cordasKlein , 7 + 6 = 13 bytes
Aqui está uma resposta com base na resposta > <> .
Experimente online!
Isso gera
fonte
Japonês ,
109 bytesEncontrou uma maneira melhor :-)
Saídas
"Q+2çQ+2ç
. Teste online!Explicação
Também pode ser
Qi2ç"Qi2ç
, que imprimeQi2çQi2ç"
. Este é mais próximo do padrão japonês Japt:Mas não acredito que exista uma maneira fácil de colocar as aspas no meio da sequência de caracteres para um quine de 9 bytes.
fonte
Q+"+Q² " ²
Ruby, 20 bytes
Isso gera
Aproveitando a
%q(...)
sintaxe de string do Ruby , que suporta parênteses aninhados.fonte
Retina , 8 bytes
Experimente online!
Impressões
Ambos contêm um
_
, doisn
, dois$
e três feeds de linha.Observe que um avanço de linha seguido por quase qualquer outro caractere é uma solução trivial, mas é questionável se é válido, porque o segundo caractere apenas se codifica e o avanço de linha realmente não codifica nenhum caractere de saída.
Explicação
Substitua a entrada vazia por a
_
.Combine uma sequência vazia, o que acontece antes ou depois do
_
e insira um avanço de linha ($n
), umn
e um$
. Desde que nós inserido pela primeira vez que_
, este adiciona cada um desses personagens, duas vezes, de modo que on
e$
conta para o$n
, e nós temos dois dos três linefeeds que precisamos na saída. O terceiro avanço de linha é impresso porque o Retina imprime um avanço de linha à direita por padrão.Também poderíamos usar
n$n$
nesta etapa, que imprimiria:fonte
Repl de Python, 4 bytes
Esta é a minha primeira solução Code Golf, por isso espero que cumpra as regras. No interpretador interativo Python 2 ou 3:
A saída é um anagrama da entrada.
Outro:
No Python 2:
No Python 3:
Atualização 15/06/2017: Mais uma:
fonte
Haskell ,
3839 bytesExperimente online! Saída:
Edit: +1 byte porque eu esqueci anteriormente a nova linha implícita à direita de
print
.Alternativa: (mesma contagem de bytes, mas não contém coruja ASCII)
Experimente online!
Saída:
fonte
Groovy,
2420 bytes-4 graças ao CalculatorFeline, o espaço em branco não era necessário, afinal!
Saída:
Explicação:
Fechamento anônimo que, quando chamado, retorna
{""*""2""}
duas vezes (concatenado).fonte
*2
como preenchimento entre aspas:{"""{""*""2""}"""*2}
05AB1E , 10 bytes
Experimente online!
Saída:
Explicação:
fonte
CJam , 6 bytes
Experimente online!
Impressões
Explicação
fonte
Bash, 36 bytes
Isso gera
(e cria o arquivo
f
como um efeito colateral, mas isso é permitido por meta .)O programa e a saída têm uma nova linha à direita.
Processo do pensamento: achei que a maneira mais fácil de gerar uma string duas vezes, além de atribuí-la a uma variável, era
A string precisa ser citada porque conterá espaços e
<
caracteres, então eu tiveque quase funciona, exceto que não gera as aspas. Felizmente, o Bash suporta concatenação literal de cadeia de caracteres, simplesmente colocando-as próximas uma da outra, de modo que anexar
"''"
ao herestring e inserir""
dentro da parte de aspas simples produz essa solução.fonte
PHP , 44 bytes
Experimente online!
fonte
CJam , 8 bytes
Experimente online!
Explicação
Semelhante ao exemplo Python na pergunta
A saída é
"2*`2*`"
.fonte
Anterior, 11 bytes
Impressões:
Explicação:
fonte
"
. Qual é a restrição sobre isso exatamente?"
seja considerado leitura da própria fonte, é apenas uma string literal.g
no entanto, é flagrantemente lendo sua própria fonte.":1+>:#,_@!
também funciona, mas não é mais curto.' 2+"8k,@
para 9 bytesQBIC , 8 bytes
Eu só descobri como fazer uma Quine adequada em QBIC. Para criar um anagrama, basta alternar entre os caracteres na string literal. Existem 24 anagramas possíveis dessa maneira.
fonte
Befunge-98 , 8 bytes
Experimente online!
fonte
Ohm , 14 bytes
Experimente online!
Saída:
Explicação
fonte
JavaScript (ES6), 15 bytes
Saídas:
Snippet:
Mostrar snippet de código
fonte
Fissão 2 ,
9 86 bytesExperimente online!
Explicação
Um átomo é criado em
R
, que se move para a direita. Esse átomo se depara com a"
, que inicia o modo de impressão. No modo de impressão, todos os caracteres (até a correspondência"
) são impressos. Isso significa que ele é impresso'!+OR
neste caso. Depois, tudo o que resta é imprimir"
, o que é feito pelos caracteres restantes.'!
define a massa do átomo para o código de caractere de!
e a+
incrementa para o código de caractere de"
. Em seguida, o código do caractere é gerado porO
e o átomo é destruído, finalizando o programa.(Na verdade, isso é apenas uma rotação do quine mais curto)
fonte
R"'!+O
não testado).Mathematica, 2 bytes
Saída:
Um número começando com um ponto decimal, como
.123
é interpretado como0.123
, então.0
é interpretado como0.0
. Como a parte do número após o ponto decimal é zero, o Mathematica não o imprime.fonte
.
codifica em si, mas não acho que0
sim? Um 0 além do ponto decimal não pode ser considerado como um zero inicial antes do ponto decimal; este é um efeito colateral da impressão de um flutuador. Portanto, sob as antigas regras do quine, não há problema aqui. (Eu não tenho certeza se as novas regras entraram em vigor ainda.)JavaScript (mais um), 11 bytes
Chamado com
f()
, saídasMostrar snippet de código
fonte
Python 3, 31 bytes
fonte
Stax ,
84 bytesExecute e depure online!
Uma porta direta desta resposta .
Versão antiga, 8 bytes
Execute e depure online!
Versão alternativa com um truque bastante barato que pode ser aplicado a quines adequados em quase qualquer idioma.
Execute e depure online!
Porque
"34bL"34bL
é uma solução adequada em Stax.Ainda outra versão, usando apenas literais de cadeia de caracteres simples.
Execute e depure online!
Explicação
fonte
05AB1E , 13 bytes
Saídas:
Experimente online!
fonte