Drucken Sie den Code rückwärts aus - kehren Sie den Code zurück

83

Schreiben Sie ein Programm, das seinen eigenen Quellcode rückwärts ausgibt, also eine eniuq .

Wertung:

  • +50, wenn Sie Pull-Daten aus dem Internet verwenden.
  • +25, wenn Sie Ihren eigenen Quellcode lesen.
  • +1 Punkt pro Zeichen
  • Die niedrigste Punktzahl gewinnt.

Regeln:

  • Keine Verwendung anderer Dateien (zB reverse.txt)
  • Die Mindestcodelänge beträgt zwei Zeichen.
  • Ihr Programm kann kein Palindrom sein.
ike
quelle
1
Es sieht so aus, als wäre dies schon einmal gemacht worden , nur ohne die Regel "keine Palindrome".
Iszi
3
Sind das Boni oder Strafen ? Sie müssen in Worten angeben, ob es sich bei etwas um eine Strafe oder einen Bonus handelt, da +10unter "Punktzahl" entweder "10 Zeichen mehr als tatsächlich" oder "der Code 10 Zeichen mehr haben kann, was nicht der Fall ist" zu verstehen ist bewertet werden ", oder andere Interpretationen.
AJMansfield
7
@AJMansfield Der niedrigste Punktestand bedeutet, dass + x eine Strafe und -x ein Bonus wäre.
Iszi
9
Die einzige Frage, die ich habe, ist, warum das Abrufen von Daten aus dem Internet mit einer höheren Strafe verbunden ist als das Lesen der Quelldatei.
AJMansfield
4
Woohoo, 1. Platz in der Liste der
Türklinke

Antworten:

69

GolfScript - 2


1

(dh \n1wo \nist das Newline-Zeichen)

Ausgabe:

1

(ie 1\n)


Um Ilmari zu zitieren :

GolfScript fügt automatisch eine neue Zeile an das Ende der Ausgabe an

Eine neue Zeile gefolgt von einer Nummer gibt also die Nummer gefolgt von einer neuen Zeile aus.

Justin
quelle
14
+1 Ich hätte nicht gedacht, dass irgendetwas die Mathematica-Lösung übertreffen könnte.
Kaya
26
Ziemlich langweilige Lösung ...
Theonlygusti
@theonlygusti Es ist Golfscript, was ich auch erwarte ...
Redwolf Programs
96

huh? 5 Zeichen

!hcuO

Ich habe eigentlich KEINE Ahnung, wie es funktioniert, aber wenn du den Interpreter herunterlädst und schreibst !hcuO, dann bekommst duOuch!

Um dies auszuführen, müssen Sie das Programm folgendermaßen ausführen:

huh.exe !hcuO

Es wird tatsächlich nach einer aufgerufenen Datei gesucht !hcuO, diese existiert jedoch nicht, sodass sie ausgegeben wirdOuch!

ProgramFOX
quelle
93
+1 für das Schreiben von etwas, das Sie nicht verstehen
Cruncher
30
Ist es nicht nur ein bisschen ironisch, dass Sie nicht verstehen, wie Ihr eigener Code funktioniert, in einem Esolang, der Ihren Code von Entwurf her auch nicht verstehen soll?
Iszi
@ Iszi Das ist der Witz.
AJMansfield
9
Ich bin mir nicht sicher, ob Sie huh?richtig verwenden, obwohl es mir schwer fällt, die richtige Dokumentation zu finden. Es scheint, dass die Verwendung beabsichtigt ist huh.exe <path to source code>und Ouch!für einen ungültigen Pfad zurückgegeben wird. Versuchen Sie, Ihren Code in eine tatsächliche Datei einzufügen und diese Datei als Argument für das zu verwenden, huh?was passiert. Es ist auch interessant zu sehen, dass eine Notes.txtDatei mit Kommentaren generiert wird .
Iszi
8
Ok, dieses Ding hat mir nur gesagt, dass es versteht, aber ich habe nicht gesehen, dass etwas passiert ist. Vielleicht sollte ich auf meinem Primärsystem damit aufhören zu spielen.
Iszi
85

Mathematica, 3 Zeichen

a 2

a 2bedeutet amal 2. Die Antwort ist also 2 a.

Alephalpha
quelle
2
Dies wird wahrscheinlich gewinnen, es sei denn, jemand kann eine Zwei-Zeichen-Lösung erhalten.
ike
22
Tatsächlich kenne ich eine Zwei-Zeichen-Lösung. Auch in Mathematica: 1#. Die Ausgabe ist #1.
alephalpha
7
@alephalpha: Dann solltest du das als Antwort posten!
ProgramFOX
65

H9 + , 13 Zeichen

!dlrow ,olleH

Wie die Webseite sagt, alle Zeichen , die nicht sind H, 9oder +ignoriert werden, so wird mein Programm druckenHello, world!

ProgramFOX
quelle
30
Der einzige praktische Vorteil verrückter esoterischer Sprachen ist die Beantwortung dieser verrückten Fragen.
Totymedli
Es wäre praktischer, wenn diese Fragen so wären.
Kojiro
1
Das ist verdammt schlau!
theonlygusti
40

Javascript: 34 Zeichen

reifitnedi detcepxenU :rorrExatnyS

Ausgänge SyntaxError: Unexpected identifier, zumindest in der Chrome-Konsole

scrblnrd3
quelle
8
Cleverer
2
D: Sie Sir, haben mein Tag
Dur-mann
4
Keine originelle Idee, es gab bereits eine Antwort in Python 2.
o0 '.
1
@Lohoris Entschuldigung, ich habe das nicht gesehen
scrblnrd3
1
Firebug-Konsole in Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
Kenorb
27

Python, 43 41

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

Mathematica, 2 Bytes

1#

Ausgänge:

# 1

Jay Bosamiya
quelle
20

TI-BASIC, 2

i2

Wo i ist die imaginäre Zahl?

Ausgänge 2i

Timtech
quelle
1
Dies funktioniert nur auf dem Startbildschirm, nicht in einem PRGM.
Kernigh
8
@kernigh Hast du es versucht? Es funktioniert gut. (Wenn die letzte Anweisung eines TI-BASIC-Programms als Ausdruck ausgewertet wird, wird das Ergebnis anstelle von "Fertig" gedruckt, wenn das Programm beendet wird.)
AJMansfield,
18

BASIC, 22 12 7 Zeichen

:-)

1 enil ni rorre xatnyS

BEARBEITEN: Wenn Sie das Programm im Sofortmodus aufrufen dürfen, kann dies auf rorre xatnyS(12 Zeichen) reduziert werden .

In BBC BASIC benötigen Sie nur 7 Zeichen:

ekatsiM
zimperliches Ossifrage
quelle
13

C ++ 472 Zeichen

Viele Charaktere, aber ich kann mir keinen einfacheren Weg in einer C-basierten Sprache vorstellen.

#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#");}
user11232
quelle
13

Bash

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

Länge: 31 Zeichen.


Sch

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

Länge: 29 Zeichen.

Dieser konnte auf einigen Linux-Distributionen nicht funktionieren, funktioniert aber unter OSX.


tcsh

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

Länge: 26 Zeichen.


csh

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

Länge: 26 Zeichen.


Der Gewinner ist:

ksh

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

Länge: 21 Zeichen.


Oben sollte auf allen * Unix-basierten Betriebssystemen funktionieren.

Kenorb
quelle
32
Funktioniert nicht für mich, ich habe einen Befehl namensdnuof
Kroltan
8
Ich habe vergessen hinzuzufügen, es funktioniert nicht auf Distributionen, die dnuofinstalliert sind (was auch immer es ist). Verdammte Hacker.
Kenorb
5
Hahaha, gibt es einen Befehl namens dnuof? : D was macht es?
Türklinke
11

GolfScript, 12 Zeichen

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

Dieser Code verwendet die doppelte Zeichenfolge in Anführungszeichen "-1%.`", kehrt sie um ( -1%), dupliziert sie ( .) und entfernt ( `) die zweite Kopie und stellt die doppelten Anführungszeichen wieder her.

Vorheriger Eintrag (13 Zeichen):

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

Basierend auf der 8-Zeichen-Quine {'.~'}.~aus dieser Antwort ; Die zusätzlichen 5 Zeichen werden benötigt, um die Ausgabe zu stringifizieren und umzukehren.

Ps. Beachten Sie, dass GolfScript automatisch eine neue Zeile an das Ende der Ausgabe anfügt. Wenn dies als Teil der Ausgabe gezählt wird, kann jeder Version des Codes ein entsprechender Zeilenumbruch vorangestellt werden, ohne dass sich dies auf die Ausgabe auswirkt. Dies kostet ein zusätzliches Zeichen.

Ilmari Karonen
quelle
10

Befunge 98 - 10 Zeichen

"8k,'!1+,@

Dies funktioniert, wenn Ihr Interpreter umgebrochene Zeilen nach "dem Hinzufügen eines zusätzlichen Leerzeichens nicht interpretiert . Wenn Ihr Interpreter umbrochene Zeilen so interpretiert, funktioniert diese 11-Zeichen-Lösung ( da doppelte Leerzeichen in einem Zeichenfolgenliteral als eins interpretiert werden ):

"9k,'!1+,@ 

Wenn ich gohne Strafe verwenden kann, dann funktionieren diese auch (7 bzw. 8 Zeichen):

"5k,g,@

und

"6k,g,@ 
Justin
quelle
9

Rubin, 60

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

Basierend auf einem klassischen Ruby Quine.

Histokrat
quelle
Gute Verwendung von Heredocs.
Jon Purdy
9

Perl, 41

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

Alte Antwort mit 52 Zeichen (27 + 25 Strafpunkte)

open+0;print ~~ reverse <0>

Liest seine eigene Quelle, speichert die Rückseite in einem Skalar und druckt diese aus.

smcg
quelle
1
Der scalarOperator kann durch ersetzt werden ~~. Sie müssen jedoch +25 zu Ihrer Punktzahl hinzufügen, um Ihren eigenen Quellcode lesen zu können.
Brotkasten
@breadbox notiert
smcg
+1. Ich wollte so etwas wie schreiben meine Shell - Lösung : $_='say"lave;\047",~~reverse,"\047=_\$"';eval, aber Ihre Lösung ist kürzer :-) Beachten Sie, dass Sie es , Golf zu 39 Zeichen nach unten verwenden say. Hoffe, Sie werden alle esoterischen Verrücktheit schlagen :-)
Tomas
@Tomas schlagen Sie ersetzen printmit say? Das führt dazu, dass nichts gedruckt wird.
smcg
Hast du Perl mit -Mfeature=sayOption ausgeführt?
Tomas
9

Fission , 6 Bytes

Ein seltener Fall einer verallgemeinerten Quine, die die gleiche Länge wie die normale Quine hat :

"LO+!'

Die Idee ist die gleiche wie bei der normalen Quine, aber wir verwenden ein linkes Atom (beginnend bei L), damit der Druckmodus den Code in umgekehrter Reihenfolge durchläuft.

Martin Ender
quelle
8

J: 26

Standard-Quining (26 Zeichen) : durch Definieren einer Funktion und Übergeben einer eigenen Definition in Anführungszeichen:

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

Könnte wahrscheinlich kürzer gemacht werden.

J-spezifisch (33 Zeichen) : indem Sie eine Variable definieren und fragen, in welcher Datei die Variable definiert wurde, dh in dieser, und dann den Inhalt dieser Datei ausdrucken:

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

Muss von einem Skript aus gespeichert und ausgeführt werden (dh nicht in der REPL, da die Antwort auf die Frage "Ihr Argument wurde nicht in einer Datei definiert" lautet, sodass keine Datei zum Lesen vorhanden ist).

Dan Bron
quelle
2
Der zweite sollte den Bonus von + 25 erhalten, um die eigene Datei lesen zu können.
Johannes Kuhn
2
@JohannesKuhn: Elfmeter, aber ja.
Jazzpi
1
"Bonus" klingt schöner.
Johannes Kuhn
7

> <> 25 Bytes

Ich war überrascht, dass dies noch nicht geschehen war. :)

...yhsif sllems gnihtemoS

Code hier einfügen und ausführen.

.Befehl ist der Sprung, Popping xund yvom Stapel, und die IP zu bewegen (x, y)in der Code - Box. In diesem Fall ist der Stapel leer, sodass die einzige Fehlermeldung der Sprache ausgegeben wird:

Something smells fishy...
mbomb007
quelle
1
Die beste Antwort
Insane
7

Microscript , 11 Byte

Ich musste das irgendwie tun.

0"Caxq"Caxq

Überraschenderweise ist dies tatsächlich kürzer als die kürzeste bekannte wahre Quine der Sprache. qund asind ansonsten äquivalent, mit der Ausnahme, dass qumschließende Anführungszeichen hinzugefügt werden, während adies nicht der Fall ist.

SuperJedi224
quelle
5

JavaScript jQuery 119 92 74 70 Zeichen

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

Jetzt benutze <pre><code>ich jQuery, wie es Minitech in den Kommentaren vorgeschlagen hat, und setze es manuell ein, damit ich es verwenden kann, text()ohne Angst davor zu haben, dass andere Codeblöcke in diesem Beitrag stören. Das <h4>manuelle Umschließen mit war beim Testen mit Chromeium nicht kompatibel, daher sollte es jetzt in den meisten Browsern funktionieren.

Wenn dieses Programm auf dieser Seite ausgeführt wird, findet es den Codeblock direkt darüber, kehrt seinen Inhalt um und legt ihn in eine Warnbox.

Es ist einfach zu überprüfen, fügen Sie es einfach in die Entwickler-Konsole ein.

AJMansfield
quelle
Dies ist viel länger als nur die Verwendung einer Funktion. Und Sie sollten jQuery (auf dieser Seite) oder zumindest querySelectorsowieso verwenden ...
Ry-
@minitech danke für den tipp, ich hab ihn erstmal getauscht querySelector. Ich würde gerne die Möglichkeit von jQuery untersuchen, aber es scheint, als würde es etwas länger dauern, bis ich es herausgefunden habe.
AJMansfield
@minitech ok, danke für den tipp jQuery. (Ich habe erst gestern angefangen, Javascript zu lernen.)
AJMansfield
Ich mag diese Lösung; in andere Richtungen denken.
theonlygusti
4

PHP, 41 Zeichen (+25)

Ich weiß nicht, ob ich die Aufgabe richtig verstanden habe. Aber hier ist ein PHP-Versuch:

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

edit: das kann viel kürzer sein:

echo strrev(file_get_contents(__FILE__));

Aber da es so einfach sein kann, wird wahrscheinlich nicht danach gefragt ...

nl-x
quelle
Wenn ich auf "Ausführen" klicke, bekomme ich eine Menge sinnlosen Blödsinns (hier ist ein kurzer Ausschnitt davon:; es >? ;)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 gibt noch viel mehr). Geben Sie auch Ihre Zeichenanzahl an. Das ist ein Code Golf. Außerdem scheint es, dass Sie Ihre Quelldatei lesen, also addieren Sie 25 zu Ihrer Zeichenanzahl und das ist Ihre Punktzahl. Die niedrigste Punktzahl gewinnt.
Justin
@Quincunx Erstens ist es rückwärts ... aber zweitens ist dies der Quellcode, den phpfiddle generiert! (aber rückwärts ...) Sie scheinen einer Menge Dinge zu entkommen und versuchen, die Dinge sicher zu halten. Ersetzen Sie array_popmit array_shift, um den Quellcode nicht rückwärts zu sehen ...
nl-x
Ja, ich kann den umgekehrten Quellcode sehen, aber was ist mit all dem fremden Text? Es gibt viele Escape-Sequenzen, einige jedoch nicht (zB: ESLAF nruterie return FALSE).
Justin
@Quincunx Entschuldigung, ich verstehe nicht, ob Sie Interesse an der Funktionsweise von phpFiddle haben oder meinen Code kritisieren. Wenn es das letztere ist, dann lege meinen Code zu meiner Verteidigung in eine .php-Datei und starte ihn in einem Browser, und es wird sauber funktionieren. Ich dachte nur, dass Phpfiddle eine nette Sache ist, die man sehen kann, damit man ein bisschen von seinem Innenleben sieht.
nl-x
4

MATLAB, 78 Zeichen:

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

Beachten Sie, dass die Lösung erfordert, dass Sie mit einem Sonderzeichen (alt + 0160) beginnen und dass genau die umgekehrte Nachricht gedruckt wird. (Im Gegensatz zur Python-Lösung)

Dennis Jaheruddin
quelle
4

UNIX-Shell, 31

Echte Lösung mit 52 Zeichen:

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

Aber Vorsicht! Ehrlichkeit zahlt sich in der heutigen Welt nicht aus! Strafe ist zu niedrig !!

6 Zeichen + 25 = 31:

rev $0
Tomas
quelle
Auf OSX rev $0erzeugt den Fehler: rev: illegal option -- b.
Kenorb
4

MS-DOS, 24 Bytes

eman elif ro dnammoc daB

Ausgabe:

Bad command or file name
Neil
quelle
3

JavaScript, 62

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

Funktioniert für mich auf dem neuesten Chrome (v 31.0.1650.63). Einige andere Browser geben möglicherweise eine andere Ausgabe aus. (Wenn Sie diese Ausgabe umkehren, dann würde es funktionieren: P)

Türknauf
quelle
3

SmileBASIC, 118 102 Bytes

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

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()
Ry-
quelle
Bitte geben Sie Ihre Umgebung an, da dies in Chrome nicht funktioniert. Ist das Rhino oder was?
George Reith
@GeorgeReith: Alles mit ES6-Pfeilfunktionsunterstützung. Alle SpiderMonkeys sollten zum Beispiel einwandfrei funktionieren (Rhino eingeschlossen).
Ry
2

CSS, 88 Bytes

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

Fügen Sie eine leere HTML-Seite ein, um Konflikte mit anderen Tags zu vermeiden.

Mama Fun Roll
quelle
2

JavaScript, 53 50 46 43 Bytes

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``)()

Bitte helfen Sie mir, dies zu verkürzen.

ericw31415
quelle
Du brauchst den Wrapper nicht. q=_=>[...`q=${q}`].reverse().join`` funktioniert genauso gut.
22.
Wenn ich den Wrapper entferne, wird er nicht automatisch ausgeführt.
ericw31415
es muss nicht. Funktionen sind in Ordnung.
22.
Dann gibt der Code jedoch die Funktionsreferenz zurück, nicht die Ausgabe der Funktion.
ericw31415
@ ericw31415 ist richtig. der Funktionsaufruf ist notwendig.
Mama Fun Roll
2

Fuzzy Octo Guacamole, 4 Bytes

KNU_

Kdruckt _UNK, Ndrückt Noneund Udrückt 0. Und _legt den obersten Wert auf dem Stapel ab (druckt aber nicht). Also wird nur _UNKgedruckt.

Bald Bantha
quelle
Warum wird Kausgegeben _UNK?
Caird Coinheringaahing
@RandomUser frage Riker nach weiteren Details, er ist der Schöpfer der Sprache. Ich habe gerade die Dokumentation gelesen.
Bald Bantha