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.


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.


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


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)

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 :-)


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. :)


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.


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!


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$

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.


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. . . .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.