Sua tarefa é criar o programa mais curto (A) que gera outro programa (B) com os bytes mais exclusivos, o que, por sua vez, gera o programa original (A). Essencialmente, você está jogando metade de um par de nossos programas principais (também conhecido como quine de iteração periódica) e jogando boliche na outra metade. A e B podem estar em diferentes idiomas.
Regras e Pontuação
Sua pontuação final é <number of unique bytes in B> / <number of bytes in A>
. Maior pontuação ganha. Note-se que a pontuação máxima teórica é 256.
- O programa A deve ter pelo menos um byte de comprimento
- O programa B não pode consistir inteiramente de no-ops, ou seja, pelo menos um caractere deve afetar a saída de alguma forma.
- Regras padrão de quines se aplicam a ambos os programas. Notavelmente, quines de erro não são permitidos em nenhum dos casos.
Para manter a consistência do formato da resposta, comece sua resposta com algo como isto:
# <Language for A> & <Language for B>, Score: <B score> / <A score> = <combined score>
code-golf
code-challenge
quine
code-bowling
Beefster
fonte
fonte
aaaaa
possui um byte exclusivo eabcde
5 bytes únicos.Respostas:
Japt & Japt , pontuação: 255/38 = 6.71
Programa A :
O programa B tem mais de 8kB, tanto que o link quebra, para não colar a coisa toda. Aqui está uma amostra:
Não consegui encontrar uma maneira de fazer com que um
NUL
byte funcionasse, e é por isso que o programa B possui apenas 255 caracteres únicos. O programa B consiste essencialmente em 255 cópias de um único programa, onde um único byte irrelevante é alterado a cada vez e as primeiras 254 execuções são ignoradas.Para a explicação, começarei com esta versão simplificada de A para que o B resultante seja mais fácil de discutir.
Este programa é baseado no jine japonês com capacidade de carga útil básica . A string no início contém uma duplicata do restante do programa,
iQ ²
insere uma cotação e duplicatas para criar uma representação de string de todo o programa e, em seguida,¯23
apara a si mesma e tudo o que está depois. A sequência resultante é um programa que gera o Programa A :Vou me referir a essa string como
U
.A última linha de A duplica
U
várias vezes com uma pequena alteração a cada vez. Especificamente, para cada númeroX
no intervalo,[1...3]
ele gera"#c" + U
ondec
está o caractere com o códigoX
. O comportamento padrão do Japt é gerar as strings sem aspas e separadas por vírgulas; portanto, essa é a saída do nosso A simplificado (observe que há um byte imprimível entre cada um#
e"iQ
:Vamos chamar isso de B simplificado .
B simplificado tem uma estrutura simples, alternando entre
#c
eU
. Felizmente para esta resposta, cada um#c
eU
é tratado como separado por vírgula, e nessa situação o comportamento disso é tudo, exceto o últimoU
, não tem efeito na saída. A única parte do B simplificado que afeta a saída é esta:O que é idêntico ao
U
que já sabemos saídas A. simplificadoA única diferença entre A simplificado e o programa A é que, em vez de gerar cópias para o intervalo,
[1...3]
o programa real gera cópias para o intervalo[1...256]
. Isso resulta em 256 versões de#c
cada uma delas com um caractere diferente, embora a última versão "Ā" seja um caractere de vários bytes, portanto, não adiciona nenhum bytes exclusivo, mas tudo, exceto o último,U
ainda é ignorado.fonte
27
necessário ajustar os ajustes sempre que os bytes forem salvos, mas fora isso, parece que funciona.Programa A, Gol> <> , 256/20 bytes = 12,8
Experimente online!
Programa B, Gol> <>
Experimente online!
O programa alterna entre a saída em si seguida por cada byte e apenas a saída em si.
Explicação:
fonte
Programa A: 05AB1E , pontuação:
256/41256/31 bytes = 8,258 ...Experimente online.
Programa B: 05AB1E
Experimente online.
Explicação:
A mais curta quine para 05AB1E é esta:
0"D34çý"D34çý
( 14 bytes ) fornecida por @OliverNi . Minha resposta usa uma versão modificada desse quine adicionando₅Ýç'q†vy27ǝD}J
.O programa B será encerrado assim que atingir o
q
, portanto, o programa B real é:Tudo depois disso é ignorado e a parte superior da pilha (
0"D34çý₅Ýç'q†22ǝ"D34çý₅Ýç'q†22ǝ
) é emitida implicitamente.fonte