Stampa il tuo codice all'indietro - reverse quine


83

Scrivi un programma che stampa il proprio codice sorgente all'indietro, in altre parole un eniuq .

punteggio:

  • +50 se si utilizzano i dati pull da Internet.
  • +25 se leggi il tuo codice sorgente.
  • +1 punto per personaggio
  • Il punteggio più basso vince.

Regole:

  • Non usare altri file (ad es. reverse.txt)
  • La lunghezza minima del codice è di due caratteri.
  • Il tuo programma non può essere un palindromo.

1
Sembra che questo sia già stato fatto in precedenza , proprio senza la regola "no palindromes".
Iszi,

3
Questi punteggi sono bonus o penalità ? Devi specificare a parole se qualcosa è una penalità o un bonus, perché dire +10può significare "punteggio come se avesse 10 caratteri in più di quanto non faccia realmente" o "il codice può avere 10 caratteri in più che non lo faranno essere segnato ", o altre interpretazioni.
AJMansfield,

7
@AJMansfield Il punteggio più basso vince significa che + x sarebbe una penalità, -x sarebbe un bonus.
Iszi,

9
L'unica domanda che ho, quindi, è perché estrarre dati da Internet ha una penalità maggiore rispetto alla lettura del file sorgente?
AJMansfield,

4
Woohoo, 1 ° posto nella lista delle domande sulla rete attiva: D Il nostro sito richiede più attenzione ...
Maniglia della porta

Risposte:


69

GolfScript - 2


1

(ovvero \n1dove si \ntrova il carattere di nuova riga)

Produzione:

1

(ie 1\n)


Per citare Ilmari :

GolfScript aggiunge automaticamente una nuova riga alla fine dell'output

Quindi una nuova riga seguita da un numero stamperà il numero seguito da una nuova riga.


14
+1 Non pensavo che qualcosa potesse battere la soluzione Mathematica.
Kaya,

26
Soluzione piuttosto noiosa ...
theonlygusti

@theonlygusti È golfscript, whaddya prevedono ...
Programmi Redwolf,

96

eh? , 5 caratteri

!hcuO

In realtà non ho idea di come funzioni, ma se scarichi l'interprete e se scrivi !hcuO, allora ottieniOuch!

Per eseguire questo, è necessario eseguire il programma in questo modo:

huh.exe !hcuO

In realtà cercherà un file chiamato !hcuO, ma non esiste, quindi viene generatoOuch!


93
+1 per scrivere qualcosa che non capisci
Cruncher,

30
Non è solo un po 'ironico che non capisca come funziona il tuo codice, in un esolang che secondo la progettazione non dovrebbe nemmeno capire il tuo codice?
Iszi,

@Iszi Questo è lo scherzo.
AJMansfield,

9
Non sono sicuro che tu stia usando huh?bene, anche se faccio fatica a trovare la documentazione adeguata. Sembra che l'utilizzo è destinato ad essere huh.exe <path to source code>e Ouch!viene restituito per un percorso non valido. Prova a inserire il tuo codice in un file reale e alimentalo come argomento per huh?vedere cosa succede. È anche interessante vedere che genera un Notes.txtfile con alcuni commenti.
Iszi,

8
Ok, questa cosa mi ha appena detto che pensa che capisca ma non ho visto succedere nulla. Forse dovrei smettere di giocarci con il mio sistema principale.
Iszi,

85

Mathematica, 3 caratteri

a 2

a 2significa avolte 2. Quindi la risposta è 2 a.


2
Questo probabilmente vincerà a meno che qualcuno non possa ottenere una soluzione a due caratteri.
Ike,

22
In effetti conosco una soluzione a due caratteri. Anche in Mathematica: 1#. L'output è #1.
alephalpha,

7
@alephalpha: Quindi dovresti postarlo come risposta!
Programma FOX il

65

H9 + , 13 caratteri

!dlrow ,olleH

Come pagina web dice, tutti i caratteri che non sono H, 9o +vengono ignorati, quindi il mio programma stamperàHello, world!


30
L'unico e solo vantaggio pratico delle folli lingue esoteriche è quello di rispondere a queste folli domande.
totymedli,

Sarebbe più pratico se queste domande fossero così.
Kojiro,

1
È dannatamente intelligente!
theonlygusti,

40

Javascript: 34 caratteri

reifitnedi detcepxenU :rorrExatnyS

output SyntaxError: Unexpected identifier, almeno nella console di Chrome


8
Uso intelligente dell'abuso del sistema attraverso l'abuso di errori
WallyWest

2
Signore, avete reso la mia giornata: D
maggiore

4
Non è un'idea originale, c'era già una risposta al riguardo in Python 2.
o0 '.

1
@Lohoris Siamo spiacenti, non l'ho visto
scrblnrd3

1
Console Firebug in Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
Kenorb,

27

Python, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]


20

TI-BASIC, 2

i2

Dov'è iil numero immaginario.

Uscite 2i


1
Funziona solo nella schermata principale, non all'interno di un PRGM.
kernigh,

8
@kernigh L'hai provato? Funziona bene (Se l'ultima istruzione di un programma TI-BASIC viene valutata come espressione, il suo risultato viene stampato invece di 'Fatto' al termine del programma)
AJMansfield

18

BASIC, 22 12 7 caratteri

:-)

1 enil ni rorre xatnyS

MODIFICA: Se ti è permesso accedere al programma in modalità immediata, questo potrebbe essere ridotto a rorre xatnyS(12 caratteri).

In BBC BASIC, hai solo bisogno di 7 personaggi:

ekatsiM

13

C ++ 472 caratteri

Molti personaggi, ma non riesco a pensare a un modo più semplice in un linguaggio basato su c.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}

13

bash

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Lunghezza: 31 caratteri.


sh

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Lunghezza: 29 caratteri.

Questo non potrebbe funzionare su alcune distribuzioni Linux, ma funziona su OSX.


tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Lunghezza: 26 caratteri.


csh

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Lunghezza: 26 caratteri.


Il vincitore è:

ksh

$ dnuof ton :found :hsk
ksh: dnuof: not found

Lunghezza: 21 caratteri.


Sopra dovrebbe funzionare su tutti i sistemi operativi basati su * unix.


32
Non funziona per me, ho un comando chiamatodnuof
Kroltan,

8
Ho dimenticato di aggiungere, non funziona su distribuzioni dnuofinstallate (qualunque cosa sia). Dannati hacker.
Kenorb,

5
Hahaha, c'è un comando chiamato dnuof? : D che cosa fa?
Maniglia della porta

11

GolfScript, 12 caratteri

"-1%.`"-1%.`

Questo codice prende la stringa tra virgolette doppie "-1%.`", la inverte ( -1%), la duplica ( .) e un-evals ( `) la seconda copia, ripristinandone le doppie virgolette.

Voce precedente (13 caratteri):

{`'.~'+-1%}.~

Basato sul quine a 8 caratteri {'.~'}.~di questa risposta ; i 5 caratteri extra sono necessari per restringere e invertire l'output.

Ps. Si noti che GolfScript aggiunge automaticamente una nuova riga alla fine dell'output. Se questo viene conteggiato come parte dell'output, una nuova riga corrispondente può essere anteposta a entrambe le versioni del codice senza influire sull'output, al costo di un carattere aggiuntivo.


10

Befunge 98 - 10 caratteri

"8k,'!1+,@

Questo funziona se il tuo interprete non interpreta le linee avvolte dopo aver "aggiunto uno spazio extra. Se il tuo interprete interpreta le linee avvolte in questo modo, allora questa soluzione a 11 caratteri funziona ( perché gli spazi duplicati in una stringa letterale vengono interpretati come uno ):

"9k,'!1+,@ 

Se posso usare gsenza penalità, allora funzionano anche questi (7 e 8 caratteri rispettivamente):

"5k,g,@

e

"6k,g,@ 

9

Ruby, 60 anni

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

Basato su un classico quino di rubini.


Bel uso di heredocs.
Jon Purdy,

9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Vecchia risposta di 52 caratteri (27 + 25 penalità)

open+0;print ~~ reverse <0>

Legge la propria fonte, memorizza il contrario in uno scalare e lo stampa.


1
L' scalaroperatore può essere sostituito da ~~. Tuttavia, devi aggiungere +25 al tuo punteggio per leggere il tuo codice sorgente.
breadbox

@breadbox notato
smcg

+1. Stavo per pubblicare qualcosa come la mia soluzione shell : $_='say"lave;\047",~~reverse,"\047=_\$"';evalma la tua soluzione è più breve :-) Nota che puoi usarlo fino a 39 caratteri say. Spero che tu possa battere tutta la stranezza esoterica :-)
Tomas,

@Tomas stai suggerendo di sostituire printcon say? Questo finisce per non stampare nulla.
smcg,

Hai eseguito perl con l' -Mfeature=sayopzione?
Tomas,

9

Fissione , 6 byte

Un raro caso di un quine generalizzato della stessa lunghezza del quine normale :

"LO+!'

L'idea è la stessa di quella normale, ma stiamo usando un atomo di sinistra (a partire dal L) in modo che la modalità di stampa attraversi il codice nell'ordine opposto.


8

J: 26

Quining standard (26 caratteri) : definendo una funzione e passandone la propria definizione, tra virgolette:

|.(,],2#{:)'|.(,],2#{:)'''

Probabilmente potrebbe essere ridotto.

Specifico di J (33 caratteri) : definendo una variabile e chiedendo in quale file è stata definita la variabile, cioè questa, quindi stampando il contenuto di quel file:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Deve essere salvato ed eseguito da uno script (cioè non nella REPL, perché la risposta alla domanda è "il tuo argomento non è stato definito in un file", quindi non c'è nessun file da leggere).


2
Il secondo dovrebbe ottenere il bonus di + 25 per leggere il proprio file.
Johannes Kuhn,

2
@JohannesKuhn: rigore, ma sì.
jazzpi,

1
"Bonus" sembra più bello.
Johannes Kuhn,

7

> <> , 25 byte

Sono stato sorpreso di scoprire che questo non era ancora stato fatto. :)

...yhsif sllems gnihtemoS

Incolla il codice qui ed eseguilo.

.è il comando Salta, saltando xe scagliando ylo stack e spostando l'IP (x, y)nella casella del codice. In questo caso, lo stack è vuoto, quindi viene stampato l'unico messaggio di errore della lingua:

Something smells fishy...

1
La migliore risposta
Insane

7

Microscript , 11 byte

In un certo senso ho dovuto farlo.

0"Caxq"Caxq

Sorprendentemente, questo è in realtà più breve del quine vero più breve conosciuto della lingua. qe asono altrimenti equivalenti, salvo l' qaggiunta di virgolette mentre anon lo fa.


5

JavaScript jQuery 119 92 74 70 caratteri

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Ora usando jQuery, come suggerito da minitech nei commenti, e eseguendo il wrapping manuale in <pre><code>modo che io possa usare text()senza timore che altri blocchi di codice in questo post interferiscano. Il wrapping manuale con è <h4>stato incompatibile con il cromo quando l'ho testato, quindi ora dovrebbe funzionare nella maggior parte dei browser.

Questo programma, se eseguito da questa pagina, trova il blocco di codice direttamente sopra, ne inverte il contenuto e lo inserisce in una finestra di avviso.

È abbastanza facile da verificare, basta incollarlo nella console di sviluppo.


Questo è molto più lungo del semplice utilizzo di una funzione. E dovresti usare jQuery (in questa pagina) o almeno querySelector...
Ry-

@minitech grazie per il suggerimento, l'ho scambiato per un querySelectormomento. Vorrei esaminare la possibilità di jQuery, ma sembra che ci vorrà un po 'più tempo per farmi capire.
AJMansfield,

@minitech ok, grazie per il jQuerysuggerimento. (Ho iniziato a studiare javascript solo ieri.)
AJMansfield il

Mi piace questa soluzione; pensare fuori dagli schemi.
theonlygusti,

4

PHP, 41 caratteri (+25)

Non so se ho capito bene l'incarico. Ma ecco una prova di PHP:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

modifica: questo può essere molto più breve:

echo strrev(file_get_contents(__FILE__));

Ma dal momento che può essere così semplice, questo probabilmente non è ciò che viene chiesto ...



Quando faccio clic su Esegui, ricevo un sacco di inutili assurdità (ecco un breve frammento di esso:; >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw c'è molto di più). Includi anche il conteggio dei personaggi; questo è un codice golf. Inoltre, sembra che stai leggendo il tuo file sorgente, quindi aggiungi 25 al conteggio dei personaggi e questo è il tuo punteggio. Il punteggio più basso vince.
Giustino il

@Quincunx Prima di tutto, è all'indietro ... ma in secondo luogo, questo è il codice sorgente che genera phpfiddle! (ma al contrario ...) Sembrano sfuggire a molte cose, cercando di mantenere le cose al sicuro. Sostituisci array_popcon array_shiftper vedere il codice sorgente non al contrario ...
nl-x

Sì, posso vedere il codice sorgente invertito, ma cosa succede con tutto il testo estraneo? Ci sono molte sequenze di escape, ma ce ne sono alcune che non lo sono (ad es. ESLAF nruterIe return FALSE).
Giustino il

@Quincunx Mi dispiace, non sto prendendo in giro se stai mostrando interesse per il funzionamento di phpFiddle o se stai criticando il mio codice. Se è quest'ultimo, quindi a mia difesa, metti il ​​mio codice in un file .php ed eseguilo in un browser, e funzionerà in modo pulito. Ho solo pensato che phpfiddle fosse una cosa carina da farti vedere, quindi puoi vedere un po 'dei suoi meccanismi interni.
nl-x

4

MATLAB, 78 caratteri:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Si noti che la soluzione richiede di iniziare con un carattere speciale (alt + 0160) e che stampa esattamente il messaggio invertito. (A differenza della soluzione Python)


4

Shell UNIX, 31

Vera soluzione a 52 caratteri:

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

Ma attenzione! L'onestà non paga nel mondo di oggi! La pena è troppo bassa !!

6 caratteri + 25 = 31:

rev $0

Su OSX rev $0genera l'errore: rev: illegal option -- b.
Kenorb,

4

MS-DOS, 24 byte

eman elif ro dnammoc daB

Produzione:

Bad command or file name

3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

Funziona per me sull'ultimo Chrome (v 31.0.1650.63). Alcuni altri browser potrebbero fornire un output diverso. (Se si inverte quell'output, allora funzionerebbe: P)


3

SmileBASIC, 118 102 byte

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT

2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()

Indica il tuo ambiente perché non funziona in Chrome. Questo Rhino o cosa?
George Reith,

@GeorgeReith: qualsiasi cosa con il supporto della funzione freccia ES6. Tutti i SpiderMonkeys dovrebbero funzionare bene, ad esempio (incluso Rhino).
Ry,

2

CSS, 88 byte

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Inserisci una pagina HTML vuota per evitare conflitti con altri tag.


2

JavaScript, 53 50 46 43 byte

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

Per favore, aiutatemi ad abbreviare.


Non hai bisogno del wrapper. q=_=>[...`q=${q}`].reverse().join`` funziona altrettanto bene.
Rɪᴋᴇʀ

Se rimuovo il wrapper, non si eseguirà automaticamente.
ericw31415,

non è necessario. Le funzioni vanno bene.
Rɪᴋᴇʀ

Ma poi, il codice restituisce il riferimento della funzione, non l'output della funzione.
ericw31415,

@ ericw31415 ha ragione. la chiamata di funzione è necessaria.
Mama Fun Roll,

2

Fuzzy Octo Guacamole, 4 byte

KNU_

Kstampa _UNK, Nspinge Nonee Uspinge 0. E _fa apparire il valore più alto nella pila (ma non stampa). Quindi _UNKviene stampato solo .


Perché l' Koutput _UNK?
caird coinheringaahing

@RandomUser chiede a Riker maggiori dettagli, è il creatore della lingua. Ho appena letto i documenti.
Bald Bantha,
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.