Escreva um quine que consiste em palavras reais em inglês separadas por espaços únicos. Uma "palavra" é definida como uma sequência que contém apenas letras minúsculas e maiúsculas ( /[a-zA-Z]+/
em regex). Para ser "real", sua palavra deve ser reconhecida pelo dicionário oficial de Scrabble .
Estou usando o dicionário Scrabble, pois fornece uma resposta definitiva sobre o que é e o que não é válido. Existem muitas áreas cinzentas com um dicionário normal. Observe que "A" e "I" (para não mencionar "quine") não são palavras válidas.
Como escrever um quine usando apenas letras e espaços é quase impossível na maioria das linguagens de programação, você tem a opção de substituir os espaços únicos entre as palavras por um caractere de sua escolha. Você também tem a opção de acrescentar caracteres à frente da primeira palavra e ao final da última palavra. Esses caracteres adicionados podem ser qualquer coisa (incluindo novas linhas e não ASCII), exceto letras (az, AZ) . Existe uma penalidade para adicioná-los (consulte Pontuação).
Detalhes
- Como de costume, os quines podem não ler ou acessar seu próprio código-fonte. (Eu diria que o comando Q do HQ9 + viola isso.)
- A saída deve ir para stdout ou uma alternativa semelhante. Não há entrada.
- As palavras não precisam ser maiúsculas corretamente. Eles podem ter maiúsculas e minúsculas em qualquer lugar. A sequência de palavras não precisa fazer nenhum sentido.
- Nenhuma palavra pode ser usada mais de 3 vezes no seu programa. Palavras com letras maiúsculas diferentes ainda são a mesma palavra (por exemplo, 'CÃO', 'cachorro' e 'dOg' são todas a mesma palavra).
- O uso de linguagens como PHP ou HTML que podem apenas exibir seu conteúdo é considerado uma brecha trivial e não é permitido.
- O programa deve conter pelo menos uma palavra.
Pontuação
Sua pontuação é o número de "palavras reais" em seu programa mais as seguintes penalidades:
- +1 para cada espaço que foi substituído por outro personagem
- n n para cada n caracteres adicionados antes da primeira palavra (sim, isso é n à potência n)
- n n para todos os n caracteres adicionados após a última palavra
Por exemplo, o programa
We all LIKE PROgraMmING
pontuaria 4 porque contém 4 palavras; nenhum caractere foi adicionado ou substituído em nenhum espaço. É claro que seria o resultado We all LIKE PROgraMmING
.
O programa
!We@all LIKE#PROgraMmING- =
pontuaria 4 + 2 + 1 + 27 = 34; 4 para as palavras, 2 para os espaços substituídos, 1 para !
a frente e 27 para - =
a extremidade. É claro que seria o resultado !We@all LIKE#PROgraMmING- =
.
A pontuação mais baixa vence. O desempate vai para a resposta com o menor número de pontos de penalidade. Se ainda houver um empate, a resposta mais votada vence.
fonte
Respostas:
golfscript, 8 palavras + 8 símbolos =
2016 (3?)As palavras são apenas um preenchimento, o núcleo é um pequeno núcleo quine:
Duplica e avalia uma função que apenas anexa as instruções para duplicar e avaliar a si mesma. Quando uma função é impressa, ela é codificada automaticamente. Este é o menor quine que faz alguma coisa .
Ou podemos simplesmente usar uma função literal que nunca é avaliada. Mas parece trapaça ...
fonte
{a`b"x.y~z"c}x.y~z
{whatever}
que violaria a regra demasiado trivial ( "Usando linguagens como PHP ou HTML que pode apenas gato para fora seu conteúdo é considerado uma brecha trivial e não é permitido.")> <> , 25 palavras + (22 + 1 1 + 1 1 ) extra =
5749Oh Deus, meu cérebro.
Como as regras indicam "Não há entrada", para que este programa funcione, você precisará inserir um arquivo vazio.
Ah, e sim,
brr
é uma palavra válida do Scrabble, como sãotsktsk
epfft
.Explicação
Primeiro de tudo, as seguintes palavras são não ops:
Isso ocorre por dois motivos:
abcdefl
números push (10, 11, 12, 13, 14, 15 e o comprimento da pilha, respectivamente). Além disso,i
pressiona -1 se EOF for atendido, visto que não há entrada.p
comando mostra três caracteresv,y,x
e colocav
na posiçãox,y
.Sim,> <> permite modificar o código fonte em tempo real! Nós realmente não fazemos uso disso, pois precisamos apenas do
p
popping.Se nos livrarmos dessas no-ops, obtemos:
De maneira semelhante, a
laced app
parte deplaced apple
e ae alp
parte deapple alp
também não são ops, e orr
debrr
apenas inverte a pilha duas vezes, o que também podemos remover:Finalmente, algo que se parece com um programa regular> <>! A idéia é fazer uso do padrão> <> quine, que funciona assim:
'
inicia a análise de string, pressionando cada caractere encontrado até atingirmos outro'
'
novamente e paramos de analisar as cordas. O resultado é que colocamos todos os caracteres do programa (exceto o inicial'
) na pilha.Então acontece o seguinte:
fonte
i
.Frango , 1 palavra
Normalmente não gosto de esolangs, mas este parecia perfeito para isso. Eu acho que isso é realmente verdadeiro:
Empurra 1 frango para a pilha. A pilha é então exibida.
fonte
R, 2 palavras + 1 substituição + 1¹ à direita = 4
Objetos que não são atribuídos a nada são apenas impressos em stdout. Como uma expressão é um objeto, o código a seguir se imprime:
Submissão anterior, 5 pontos:
fonte
Python 2, 58 = 37 palavras + 21 sinais de pontuação
Com algumas novas linhas adicionadas:
Os três usos por restrição de palavras foram o que dificultou a escrita. Eu queria usar a string com todo o código mais de três vezes, e cada string tinha que ser isolada com
if else and or
operadores dos quais eu tinha apenas um suprimento limitado.fonte
Julia, 1 palavra + 1¹ anterior = 2
Julia tem objetos chamados símbolos que são definidos usando um precedente
:
. Muito parecido com a minha solução R, isso apenas imprime quando enviado.fonte
Linha de comando do DOS, 10
Erro quine, não banido, parece
fonte
&
codifica todo o código e para a saída&
uma palavra, embora?&
são dois símbolos. 5 (palavras) + 1 (à direita) + 2 ^ 2 à esquerda = 10.Encantamentos Rúnicos , Pontuação 4 + 3 + 1 1 +1 1 = 9
Experimente online!
Palavras:
hot ox not knot
(4)Substituições:
3 4 +
(3)Antes:
"
(1)Depois:
@
(1)Todos os personagens
GNOQWghtxz
não funcionam no Runic (assim como espaço e período, mas mais espaços não ajudam na pontuação). IncluindoX
ek
exigido para a funcionalidade, isso fornece a seguinte lista de palavras disponíveis:Eu escolhi com base nas necessidades do espaço em que estava entrando e fazendo com que parecesse engraçado.
A remoção de todos os caracteres NOP fornece a seguinte solução:
Experimente online!
fonte
Hã? - 1 palavra + 1 ** 1/1 ^ 1 = 1 caractere após a palavra = 2 pontuação total.
Ouch!
é um quine válido em hein?Execute como
pythuhn.py Ouch!
e não pode haver um arquivo nomeadoOuch!
no diretório atual.fonte