Um Quat é uma combinação de um quine e o popular programa de gatos esolang .
Desafio
O desafio é escrever um programa padrão para gatos. Quaisquer que sejam as entradas do usuário, o programa fará o eco da entrada para stdout.
No entanto, quando o comprimento da entrada for maior que 0 e um múltiplo de 4, o programa deverá gerar seu próprio código-fonte. Quat vem do português quatro , que se traduz em 'quatro'.
Regras
- Aplicam-se brechas padrão
- Você não pode ler o código fonte de um arquivo
- Uma entrada vazia deve produzir uma saída vazia
Bônus
Se o tamanho da entrada for múltiplo de 4, você poderá ganhar um bônus de 25% imprimindo os length/4
tempos de quine . Outro bônus de 5% se você separar a saída por espaços (não é permitido espaço à direita).
Casos de teste
Os seguintes casos de teste se aplicam ao programa in%4=0?cat:self
(não é um idioma real).
<empty input> -> <empty output>
input -> input
1234 -> in%4=0?cat:self
12345678 -> in%4=0?cat:self
0% de bônus
12345678 -> in%4=0?cat:selfin%4=0?cat:self
de 25% de bônus
12345678 -> in%4=0?cat:self in%4=0?cat:self
de 30% de bônus
Pontuação
Isso é código-golfe . O menor código em bytes vence.
\n
ser o novo caractere de linha, por 1 byte de entradaRespostas:
CJam, 23 * 0,75 = 17,25 bytes
Teste padrão generalizado ...
ou
Teste aqui.
Explicação
A outra versão evita o uso de uma variável usando o truque de rotação de pilha
]:\
.fonte
Sério,
89 bytesExperimente Online
(Pressione Enter uma vez na caixa de entrada para testar a entrada vazia.)
O primeiro bônus pode ser feito em 12 bytes (16 * .75):
Explicação:
Como algumas pessoas não gostam do uso do quining interno da Seriously, eu forneço esta versão de 22 bytes que não usa
Q
como referência:Se você é uma dessas pessoas, considere esta a versão definitiva (por enquanto) e, em seguida, inicie um meta thread sobre o uso de built-ins em quines.
fonte
Pitão, 33 * 0,75 = 24,75
Suíte de teste
Quine Pyth padrão usando join. Isso é apenas uma verdadeira solução para o intérprete on-line, que não adiciona uma nova linha final à direita.
Obter o bônus final resulta em uma pontuação de 39 * .7 = 27,3:
fonte
Vitsy ,
1817 bytesTão perto .Sim. Agora estou ganhando entre não construídos em quiners! olha seriamenteNão há razão para eu ir atrás dos bônus - eles gastariam muito mais bytes.
Trapaça quine versão, 12 bytes:
fonte
G`
é legal! Parece mais legítimo que um simplesQ
comando.Emacs Lisp (323 * 0,75 = 242,25)
Isso usa a mecânica de cotação do Lisp para fornecer o código fonte como entrada para si mesmo.
Versão antiga de trapaça
Ungolfed:
fonte
JavaScript,
575672 bytes * 0,75 = 54Graças a @ Neil por uma economia de um byte!
A solução mais curta que encontrei foi bem direta.
Então, aqui estão algumas soluções bônus (mais interessantes):
JavaScript,
8281 bytes * 0,75 = 60,75Este abusa
repeat
da funcionalidade de lançar uma exceção se for passado um não inteiro.JavaScript, 83 bytes * 0,70 = 58,1
Este último é definitivamente o meu favorito, dividindo a entrada em cada quatro caracteres usando o regex
/.{4}/
. Se houver algum caractere no final da string quando nóspop
, ele não é divisível por 4, então alerte a entrada. Caso contrário, opop
comprimento da matriz será reduzido em um, portanto, nesse ponto, o comprimento da matriz será igual ao comprimento de entrada / 4. Nesse caso, apenasfill
com o quine ejoin
com os espaços.fonte
&&
para||
, coloque um!
antes do(p=prompt())
, remova o<1
e mova op
para dentro do?:
.Perl,
6865 * 0,75 = 48,75 bytesVeja o conjunto de testes online aqui.
Quebrado
fonte
Mathematica, 229 bytes
Todo o espaço em branco é para
InputForm
o programa corresponder ao seu código real.fonte
Javascript ES6, 45 bytes
Extensão do meu Bling Quine de 21 bytes. Espero que a
prompt
saída de mixagem e função seja permitida.fonte
JavaScript, 33 bytes
Outras soluções:
4436 bytes38,5 bytes
fonte