Mandoline quine

25

Escreva um quine ... do qual todos os outros caracteres possam ser removidos, ele ainda será um quine válido. Você pode especificar se deseja começar a remover caracteres no primeiro ou no segundo caracteres.

Critérios de pontuação (adicione bônus / porcentagens penatly para a porcentagem total):

  • As respostas devem ter pelo menos 4 caracteres
  • O programa deve conter pelo menos um caractere alfabético em sua origem, por exemplo, 12345!@#$%^&*()é desqualificado
  • + 750% se a linguagem usada não estiver completa em Turing (estou olhando para você, HTML!)
  • -15% se a solução não ler sua fonte de qualquer lugar, de qualquer forma
  • -20% se você também pode manter apenas cada quinto personagem e ainda formar um quine

A pontuação é medida pelo número de caracteres no primeiro programa.

Exemplo (programas não reais):

Se 123456789abcdefe 13579bdfsão ambos quines, a pontuação é 15. Além disso, se 159dtambém for uma quine, a pontuação final será 12.

Isso é código-golfe, então a pontuação mais baixa vence.

Jwosty
fonte
2
@ hosch250 O programa original não seria um problema, porque não imprimia esses espaços em branco. O mesmo vale para comentários desnecessários.
precisa saber é o seguinte
1
Sim, nunca programei um quine antes e não faço ideia de como fazê-lo sem ler o código-fonte em C ++. Eu já os vi em C ++ antes!
precisa saber é o seguinte
1
Você declara: "-20% se você também pode remover a cada 4 caracteres e ainda formar um quine". Mas tecnicamente não é isso que acontece no seu exemplo. Quer dizer que você pode fazê-lo uma segunda vez?
mmumboss
4
Os bônus são aditivos ou multiplicativos? Ou seja, se meu programa tiver 10 caracteres e se qualificar para o bônus de -15% e o bônus de -20%, sua pontuação será 10 * (1 - 0,15 - 0,2) = 6,5 ou 10 * (1 - 0,15) * (1 - 0,2) = 6,8? Eu assumi o último, mas um esclarecimento explícito seria bom.
Ilmari Karonen
1
Isso não seria uma mina de Mandoline, não uma guilhotina? As guilhotinas fazem um corte limpo, geralmente fatal, e a cabeça rola para longe. Mandolinas fazem com as muitas fatias uniformemente espaçadas. :)
Jonathan Van Matre

Respostas:

24

PHP, 4 caracteres - 15% - 20% = 2,72 2,6 pontos

ABCD

Sim, o PHP é uma linguagem completa de Turing. Ninguém disse que eu tenho que usar qualquer um dos seus recursos de programação reais. ;-)

Editar: a pontuação foi alterada com base no esclarecimento de que os bônus são aditivos, não multiplicativos.

Ilmari Karonen
fonte
Isso funciona no ASP, possivelmente.
Ismael Miguel
2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ eu desisto. : P
Jwosty
17
Na verdade, o uso dos recursos reais de programação do PHP é desencorajado.
Rhymoid 8/03/14
1
Esta não é uma solução adequada. Ainda uma boa resposta, no entanto
MilkyWay90
14

TI BASIC 4 - 35% = 2,6

Posso entendê-los errado, mas acho que também sou elegível para os bônus de -15% e -20%, o que significa que tenho a menor pontuação possível.

Eu posso escrever o programa:

123i

que produzirá 123ionde i é, obviamente, a unidade imaginária. Quando você remove o primeiro e o terceiro caracteres, resta apenas o 2iresultado2i

mmumboss
fonte
Não exatamente ... '12i' produzirá '12i' e '2' produzirá '2' para uma pontuação mínima de 1,95.
Intx13
Na verdade, '2i' tem 1,3 pontos e, se o programa vazio é considerado quine, 'i' tem 0,65.
Intx13
4
@ intx13: " As respostas devem ser de pelo menos 4 caracteres. "
Ilmari Karonen
Ah, eu senti falta disso!
Intx13
Bata-me a ele;)
Timtech
13

Python - 95

Grande desafio. Eu pensei que isso era muito inteligente, e realmente uma solução legítima!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)
qwr
fonte
1
Agradável! Observe que isso tecnicamente não funciona como está, pois você acaba excluindo a nova linha ao fazer o quine alternativo. requer um pouquinho de ajustes IOW
Claudiu
3
@ Claudiu Bem, acho que depende de o OP considerar a nova linha um personagem. Nesse caso, você pode apenas adicionar uma nova linha entre cada linha. 96 chars
qwr
É claro que uma nova linha é um personagem ...
mbomb007
11

Golfscript, 5 pontos

{hai}

é uma função que, quando executada, executará a função (não existente) hai. No entanto, não é executado, mas é impresso quando o programa termina - incluindo os colchetes externos. A remoção do outro caractere gera:

{a}

Lame, eu sei :-)

John Dvorak
fonte
Eu acredito que você também se qualifica para os dois bônus: seu programa não lê seu próprio código-fonte e também {}é uma opção.
Ilmari Karonen
@IlmariKaronen é difícil dizer o que conta como ler o código-fonte próprio. As funções de desvalorização contam? A avaliação de cadeias conta? Quanto ao outro bônus - talvez seja apenas péssimo, mas li "remova a cada quatro caracteres" como "mantenha cada quinto caractere", o que me deixaria com apenas um colchete (embora {ab0}qualifique se 0pode ser o que é mantido)
John Dvorak
É realmente mal formulado, mas o exemplo sugere que significa "manter cada quarto caractere". De qualquer forma, como você observa, {ab0}qualifica-se de qualquer maneira.
Ilmari Karonen
Parece que {hi}também funciona, será mais curto (4 caracteres) e também se qualificará para todos os bônus. (Parece que o script {iavalia a {ipor alguma razão ...)
Claudiu
8

HQ9 + - 4 * 7,5 * 0,8 = 24 pontos

Q+++

Ainda assim, com cada segundo caractere:

Q+

... e cada quinto:

Q

Desculpe, eu não pude resistir. :)

Smallhacker
fonte
7

HTML / remarcação, 4 * 7,5 = 30

HHHH

Admito que isso é ridículo, mas na verdade não vai contra nenhuma regra da questão. Exceto que HTML / Markdown pode não ser considerado uma linguagem de programação real.

n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fonte
Suponho que não especifiquei que programas que não podem ser divididos menores não são válidos. Revisão desafio ...
Jwosty
@ Joshua: então "HHHH" em HTML venceria. Nota 5555não funciona porque não tem caractere alfabético
Claudiu
Você precisa de um caractere alfabético.
QWR
@qwr: Esqueci isso ao olhar para o GolfScript. Removido.
N
Hmm ... suponho que isso seja válido: P
Jwosty
5

! / bin / sh

Gostei tanto da solução qwr , que descaradamente fiz uma porta para o shell POSIX. Não o salve em um nome de arquivo que contenha espaços.

: '#';cat $0

#c a t   $ 0

Comece a remover no caractere número 1 e conte novas linhas como caracteres. O segundo quine é claro:

 #;a 0
cat $0

Por favor, vote acima da resposta do qwr em vez desta!

joeytwiddle
fonte
3

Bash, 23

Newline é um personagem!

Alguns comentários confusos funcionam, de modo que, quando todos os outros caracteres iniciados pelo primeiro são removidos, o comentário se torna código e o código se torna um comentário:

#cRaRtR R$R0R R#
cat $0

Depois que todos os outros caracteres ( incluindo a nova linha ) forem removidos:

cat $0 #ct$

fonte
não é um problema, se ele lê sua própria fonte.
Daniero
@daniero "-15%, se a solução não lê a sua fonte de qualquer lugar em qualquer forma" implica que você está autorizado a ler fonte do programa (mas você não recebem o bônus)
@daniero oh eu olhei na wikipedia Suponho que é batota ... mas é código-golf
Eu sempre votei em gatos!
Antonio Ragagnin
2

Brainf ** k, 37 - 15% = 31,45

Abusando do intérprete portátil de Brainfuck

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Comece a remover do segundo caractere.

Timtech
fonte
Quando executo isso, recebo B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]como saída, portanto, faltam alguns caracteres.
22414 Sylwester
É Brainfuck, ou um dialeto específico de Brainfuck, que funciona apenas em um intérprete?
user253751
@immibis É regular (essas letras maiúsculas podem ser espaços, símbolos ou qualquer outra coisa). No entanto, você deve usar o intérprete portátil vinculado a partir da resposta.
Timtech
1
A primeira parte fica à esquerda até encontrar o ÿ e o intérprete vinculado armazena o código 5000 bytes antes do início da fita de dados. Isso não é Brainfuck portátil.
precisa saber é o seguinte
0

HQ9 + T, - 4 * 0,8 = 3,2 pontos

qqqq

É um quine válido (ish) e um quine a cada segundo e quinto char. Eu não pude resistir. . . .

Gavriel Feria
fonte