Mandoline Quine


25

Scrivi un quine ... da cui ogni altro personaggio può essere rimosso, sarà comunque un quine valido. È possibile specificare se iniziare a rimuovere i caratteri dal primo o dal secondo carattere.

Criteri di punteggio (sommare insieme bonus / percentuali penatly per la percentuale totale):

  • Le risposte devono contenere almeno 4 caratteri
  • Il programma deve contenere almeno un carattere alfabetico nella sua fonte, quindi ad esempio 12345!@#$%^&*()è squalificato
  • + 750% se la lingua utilizzata non è completa di Turing (ti sto guardando, HTML!)
  • -15% se la soluzione non legge la sua fonte da nessuna parte in nessuna forma
  • -20% se riesci anche a mantenere solo ogni 5 ° personaggio e formare comunque un quine

Il punteggio viene misurato dal numero di caratteri nel primo programma.

Esempio (non programmi reali):

Se 123456789abcdefe 13579bdfsono entrambi quine, il punteggio è 15. Inoltre, se 159dè anche un quine, il punteggio finale è 12.

Questo è code-golf, quindi vince il punteggio più basso.


2
@ hosch250 Il programma originale non sarebbe un quine perché non avrebbe stampato quegli spazi bianchi. Lo stesso vale per i commenti non necessari.
Jwosty,

1
Sì, non ho mai programmato un quine prima e non ho idea di come farlo senza leggere il codice sorgente in C ++. Tuttavia, li ho già visti in C ++!
Hosch250,

1
Afferma: "-20% se puoi anche rimuovere ogni 4 caratteri e formare ancora un quine". Ma tecnicamente questo non è ciò che accade nel tuo esempio. Vuoi dire che puoi farlo una seconda volta?
mmumboss

4
I bonus sono additivi o moltiplicativi? Cioè, se il mio programma è lungo 10 caratteri e si qualifica sia per il bonus del -15% che per il bonus del -20%, il suo punteggio sarà 10 * (1 - 0,15 - 0,2) = 6,5 o 10 * (1 - 0,15) * (1 - 0,2) = 6,8? Ho ipotizzato quest'ultimo, ma un chiarimento esplicito sarebbe carino.
Ilmari Karonen,

1
Non sarebbe un chine di Mandoline, non una ghigliottina? Le ghigliottine ne tagliano una pulita, generalmente fatale, e la testa rotola via. I mandolini fanno con le molte fette equidistanti. :)
Jonathan Van Matre

Risposte:


24

PHP, 4 caratteri - 15% - 20% = 2,72 2,6 punti

ABCD

Sì, PHP è un linguaggio completo di Turing. Nessuno ha detto che devo usare nessuna delle sue reali funzionalità di programmazione. ;-)

Modifica: modificato il punteggio in base al chiarimento che i bonus sono additivi, non moltiplicativi.


Questo funziona in ASP, possibilmente.
Ismael Miguel,

2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Mi arrendo. : P
Jwosty

17
In realtà, l'uso delle funzionalità di programmazione effettive di PHP è scoraggiato.
Rhymoid

1
Questo non è un vero quine. Comunque una buona risposta, però
MilkyWay90

14

TI BASIC 4 - 35% = 2.6

Potrei capirli male, ma penso di essere idoneo anche per i bonus -15% e -20%, il che significa che ho il punteggio più basso possibile.

Posso scrivere il programma:

123i

che produrrà 123idove ovviamente è l'unità immaginaria. Quando rimuovi il 1o e il 3o carattere tutto ciò che rimane è 2iquali output2i


Non del tutto ... '12i' produrrà '12i' e '2' produrrà '2' per un punteggio minimo di 1,95.
intx13

In realtà, '2i' segna 1.3, e se il programma vuoto è considerato un quine, 'i' ottiene 0,65.
intx13

4
@ intx13: "Le risposte devono contenere almeno 4 caratteri. "
Ilmari Karonen

Ah, l'ho perso!
intx13

Beat me to it;)
Timtech

13

Python - 95

Grande sfida. Ho pensato che fosse abbastanza intelligente, e in realtà una soluzione legittima!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)

1
Bello! Nota che tecnicamente non funziona così com'è poiché finisci per eliminare la nuova riga quando effettui il quine alternativo. richiede un po 'di ottimizzazione IOW
Claudiu

3
@Claudiu Beh, credo che dipenda dal fatto che OP consideri newline un personaggio. In tal caso, puoi semplicemente aggiungere una nuova riga tra ogni riga. 96 caratteri
qwr

Ovviamente una newline è un personaggio ...
mbomb007,

11

Golfscript, 5 punti

{hai}

è una funzione che, una volta eseguita, eseguirà la funzione (inesistente) hai. Non viene eseguito, tuttavia, ma piuttosto stampato al termine del programma, comprese le parentesi esterne. Rimuovendo l'altro personaggio si ottiene:

{a}

Lame, lo so :-)


Credo che anche tu abbia i requisiti per entrambi i bonus: il tuo programma non legge il suo codice sorgente ed {}è anche un quine.
Ilmari Karonen,

@IlmariKaronen è difficile dire cosa conta come leggere il proprio codice sorgente. Conta le funzioni non valutate? Conta la valutazione delle stringhe? Per quanto riguarda l'altro bonus - forse è solo una frase sbagliata, ma leggo "rimuovi ogni quattro caratteri" come "mantieni ogni quinto carattere", il che mi lascerebbe con una parentesi (anche {ab0}se si qualifica se 0può essere quello che viene mantenuto)
John Dvorak

È davvero mal formulata, ma l'esempio suggerisce che significa "mantenere ogni quarto carattere". Comunque, come notate, si {ab0}qualifica in entrambi i modi.
Ilmari Karonen,

Sembra {hi}anche funzionare, sarà più breve (4 caratteri) e si qualificherà anche per tutti i bonus. (Sembra che la sceneggiatura {ivaluti {iper qualche motivo ...)
Claudiu


8

HQ9 + - 4 * 7.5 * 0.8 = 24 punti

Q+++

Ancora una quinta con ogni secondo personaggio:

Q+

... e ogni quinto:

Q

Scusa, non ho resistito. :)


7

HTML / Markdown, 4 * 7.5 = 30

HHHH

Ammetto che questo è zoppo, ma in realtà non va contro alcuna regola nella domanda. Tranne che HTML / Markdown non può essere considerato un vero linguaggio di programmazione.


Suppongo di non aver specificato che i programmi che non possono essere divisi in dimensioni più piccole non sono validi. Revisionare la sfida ...
Jwosty

@Jwosty: allora "HHHH" in HTML avrebbe vinto. Nota 5555non funziona perché non ha caratteri alfabetici
Claudiu

Hai bisogno di un carattere alfabetico.
qwr

@qwr: Dimenticato che guardando GolfScript. Rimosso.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Hmm ... Suppongo che questo sia valido: P
Jwosty

5

! / Bin / sh

Mi è piaciuta così tanto la soluzione di qwr , ho fatto spudoratamente una porta per la shell POSIX. Si prega di non salvarlo in un nome file contenente spazi.

: '#';cat $0

#c a t   $ 0

Inizia a rimuovere dal carattere numero 1 e conta le nuove righe come caratteri. Il secondo quine è ovviamente:

 #;a 0
cat $0

Per favore, vota la risposta di qwr invece di questa!


3

Bash, 23

Newline è un personaggio!

Alcuni commenti disordinati funzionano, in modo che quando ogni altro carattere a partire dal primo viene rimosso, il commento diventa codice e il codice diventa un commento:

#cRaRtR R$R0R R#
cat $0

Dopo aver rimosso tutti gli altri personaggi ( inclusa la nuova riga ):

cat $0 #ct$

non è un quine se legge la propria fonte però.
daniero,

@daniero "-15% se la soluzione non legge la sua fonte da nessuna parte in nessuna forma" implica che ti è permesso leggere la fonte del programma (ma non ottieni il bonus)

@daniero oh ho guardato su Wikipedia suppongo che stia tradendo ... ma è code-golf

Voto sempre i gatti!
Antonio Ragagnin,

2

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

Abuso dell'interprete Brainfuck portatile

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

Inizia a rimuovere dal secondo carattere.


Quando B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]eseguo questo ottengo come output, quindi mancano alcuni personaggi.
Sylwester

È Brainfuck o un dialetto particolare di Brainfuck che funziona solo su un interprete?
user253751

@immibis È normale (quelle lettere maiuscole possono essere spazi o simboli o altro). Tuttavia, è necessario utilizzare l'interprete portatile collegato dalla risposta.
Timtech

1
La prima parte rimane a sinistra finché non trova ÿ e l'interprete collegato memorizza il codice 5000 byte prima dell'inizio del nastro dati. Brainfuck è quasi portatile.
user253751

0

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

qqqq

È un quine valido (ish) e un quine ogni secondo e quinto carattere. Non ho resistito. . . .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.