In dieser Frage habe ich Sie gebeten, ein Anagramm-Quine anhand seiner Ausgabe zu erraten. Es sieht jedoch so aus, als hätten wir noch keine Frage, ob wir ein Anagramm-Quine spielen wollen. Ihre Aufgabe wird es also sein, das kürzeste Anagramm zu machen, das Sie können.
Was ist ein Anagramm Quine?
Ein Anagramm-Quine ist ein nicht leeres Programm, das ein anderes Anagramm seines Quellcodes als den ursprünglichen Quellcode ausgibt.
Hier ist ein Beispiel für ein Anagramm-Quine in Python 2:
print`'`print`*2'*2`
Sie sollten Ihre eigene Quelle für diese Herausforderung nicht lesen.
code-golf
quine
permutations
Weizen-Assistent
quelle
quelle
Antworten:
Pyth , 2 Bytes
Ausgänge
Probieren Sie es online!
quelle
()
das Quin viel kürzer ist als das bekanntejN*2]"jN*2]
?V , 4 Bytes
Ausgänge:
Probieren Sie es online!
quelle
i2
?2 -> do the next thing twice
i -> insert the following
> <> ,
987 Bytes1 Byte dank @WheatWizard durch Verwenden
!
und Inkrementieren abrufen"
Golfed 1 Byte dank @ ConorO'Brien mit
#
anstelle von<!
Probieren Sie es online!
Ausgänge
"#o>-1:
.Erläuterung
quelle
":1+>o<!
ist etwas kürzer.":1->o#
Brainfuck, 158 Bytes
Probieren Sie es online!
Es ist möglicherweise nicht die kürzeste Version, aber es funktioniert zumindest.
Es macht Spaß , dass der Ausgabecode tatsächlich ausgeführt werden kann (und nicht mehr funktioniert).
Ausgabe
Erläuterung
quelle
Python 3, 32 Bytes
Drucke
p"r"i"n"t"2(")*p"r"i"n"t"2(")*\n
, sortierte Ausgabe:\n""""""""""""(())**22iinnpprrtt
quelle
Ruby , 8 Bytes
Probieren Sie es online!
Dies wird gedruckt
Erläuterung
Dies funktioniert ähnlich wie die Python-Antwort in der Frage. Es wird die Zeichenfolge machen
p*2p*2
und mit Ruby'sp
wird die Darstellung der Zeichenfolge gedruckt.quelle
p
anstelle vonputs
?! So viel verschwendete Zeit ...p x
entsprichtputs x.inspect
JavaScript (ES6),
4032 BytesKein Herumspielen mit Function.toString. Als Bonus sieht der Code in der Zeichenfolge fast legal aus. Bearbeiten: 8 Bytes mit
+
anstelle von gespeichertrepeat(2)
.quelle
*2
statt verwenden.repeat(2)
, geht das nicht?*
für Zeichenfolgen überladenKlein , 7 + 6 = 13 Bytes
Hier ist eine Antwort, die auf der Antwort> <> basiert .
Probieren Sie es online!
Dies gibt aus
quelle
Japt ,
109 BytesEinen besseren Weg gefunden :-)
Ausgänge
"Q+2çQ+2ç
. Testen Sie es online!Erläuterung
Könnte auch sein
Qi2ç"Qi2ç
, was drucktQi2çQi2ç"
. Dieser ist näher an der Standard-Japt-Quine:Aber ich glaube nicht, dass es eine einfache Möglichkeit gibt, das Anführungszeichen in der Mitte der Zeichenfolge für ein 9-Byte-Quine zu verkeilen.
quelle
Q+"+Q² " ²
Ruby, 20 Bytes
Dies gibt aus
Nutzen Sie Rubys
%q(...)
String-Syntax, die verschachtelte Klammern unterstützt.quelle
Retina , 8 Bytes
Probieren Sie es online!
Druckt
Beide enthalten einen
_
, zwein
, zwei$
und drei Zeilenvorschübe.Beachten Sie, dass ein Zeilenvorschub gefolgt von fast jedem anderen Zeichen eine triviale Lösung darstellt. Es ist jedoch fraglich, ob er gültig ist, da das zweite Zeichen nur sich selbst codiert und der Zeilenvorschub keines der Ausgabezeichen wirklich codiert.
Erläuterung
Ersetzen Sie die leere Eingabe durch a
_
.Entspricht einer leeren Zeichenfolge, die vor oder nach dem steht,
_
und fügt einen Zeilenumbruch ($n
), einn
und ein$
. Da wir das zuerst eingefügt haben,_
wird jedes dieser Zeichen zweimal hinzugefügt, so dass dien
und das$
berücksichtigen$n
, und wir erhalten zwei der drei Zeilenvorschübe, die wir in der Ausgabe benötigen. Der dritte Zeilenvorschub wird gedruckt, da Retina standardmäßig einen nachfolgenden Zeilenvorschub druckt.Wir könnten auch
n$n$
in dieser Phase verwenden, die dann drucken würde:quelle
Python Repl, 4 Bytes
Dies ist meine erste Code Golf-Lösung, daher hoffe ich, dass sie den Regeln entspricht. Im interaktiven Interpreter von Python 2 oder 3:
Die Ausgabe ist ein Anagramm der Eingabe.
Ein weiterer:
In Python 2:
In Python 3:
Update 15.06.2017: Noch eine:
quelle
Haskell ,
3839 BytesProbieren Sie es online! Ausgabe:
Edit: +1 Byte, weil ich vorher den impliziten Zeilenumbruch von vergessen habe
print
.Alternative: (Gleiche Byteanzahl, enthält aber keine ASCII-Eule)
Probieren Sie es online!
Ausgabe:
quelle
Groovy,
2420 Bytes-4 dank CalculatorFeline wurde das Leerzeichen doch nicht benötigt!
Ausgabe:
Erläuterung:
Anonymer Abschluss, der beim Aufrufen
{""*""2""}
zweimal zurückgegeben wird (verkettet).quelle
*2
Abstand zwischen Anführungszeichen verwendet wird:{"""{""*""2""}"""*2}
05AB1E , 10 Bytes
Probieren Sie es online!
Ausgabe:
Erläuterung:
quelle
CJam , 6 Bytes
Probieren Sie es online!
Druckt
Erläuterung
quelle
Bash, 36 Bytes
Dies gibt aus
(und erstellt die Datei
f
als Nebeneffekt, aber das ist per Meta erlaubt .)Sowohl das Programm als auch die Ausgabe haben einen nachgestellten Zeilenumbruch.
Denkprozess: Ich stellte mir vor, dass der einfachste Weg, einen String zweimal auszugeben, neben der Zuweisung zu einer Variablen, der folgende ist
Die Zeichenfolge muss in Anführungszeichen gesetzt werden, da sie Leerzeichen und
<
Zeichen enthältWas fast funktioniert, außer dass die Anführungszeichen nicht ausgegeben werden. Glücklicherweise unterstützt Bash die Verkettung von Zeichenfolgen, indem sie einfach nebeneinander platziert und so angehängt werden
"''"
an den Herestring und das Einfügen""
in den einfachen Anführungszeichen-Teil ergibt diese Lösung.quelle
PHP , 44 Bytes
Probieren Sie es online!
quelle
CJam , 8 Bytes
Probieren Sie es online!
Erläuterung
Ähnlich dem Python-Beispiel in der Frage
Die Ausgabe ist
"2*`2*`"
.quelle
Befunge, 11 Bytes
Drucke:
Erläuterung:
quelle
"
. Was ist die Einschränkung genau?"
als eigene Quelle betrachtet wird, es ist nur ein String-Literal.g
Allerdings ist es ziemlich krass, seine eigene Quelle zu lesen.":1+>:#,_@!
funktioniert auch aber es ist nicht kürzer.' 2+"8k,@
für 9 BytesQBIC , 8 Bytes
Ich habe gerade herausgefunden, wie man in QBIC eine richtige Quine macht. Um ein Anagramm daraus zu erstellen, müssen Sie einfach die Zeichen im String-Literal umschalten. Auf diese Weise gibt es 24 mögliche Anagramme.
quelle
Befunge-98 , 8 Bytes
Probieren Sie es online!
quelle
Ohm , 14 Bytes
Probieren Sie es online!
Ausgabe:
Erläuterung
quelle
JavaScript (ES6), 15 Byte
Ausgänge:
Snippet:
Code-Snippet anzeigen
quelle
Spaltung 2 ,
9 86 BytesProbieren Sie es online!
Erläuterung
Bei entsteht ein Atom
R
, das sich nach rechts bewegt. Dieses Atom stößt dann auf einen"
, der den Druckmodus startet. Im Druckmodus werden alle Zeichen (bis zur Übereinstimmung"
) gedruckt. Dies bedeutet, dass'!+OR
in diesem Fall gedruckt wird. Dann wird nur noch gedruckt"
, was von den verbleibenden Zeichen erledigt wird.'!
Setzt die Masse des Atoms auf den Zeichencode von!
und+
erhöht sie auf den Zeichencode von"
. Dann wird der Zeichencode von ausgegebenO
und das Atom zerstört, wodurch das Programm beendet wird.(Eigentlich ist dies nur eine Rotation der kürzesten Quine)
quelle
R"'!+O
ungetestet).Mathematica, 2 Bytes
Ausgabe:
Eine Zahl, die mit einem Dezimalpunkt beginnt, wie dies
.123
interpretiert wird0.123
,.0
wird interpretiert als0.0
. Da der Teil der Zahl nach dem Komma Null ist, druckt Mathematica ihn nicht aus.quelle
.
verschlüsselt sich selbst, aber ich glaube die0
macht das nicht? Eine 0 hinter dem Komma kann nicht als Kodierung einer führenden Null vor dem Komma angesehen werden. Letzteres ist ein Nebeneffekt beim Drucken eines Gleitkommas. Unter den alten Quine-Regeln gibt es hier also kein Problem. (Ich bin nicht sicher, ob die neuen Regeln noch in Kraft getreten sind.)JavaScript (noch ein weiteres), 11 Bytes
Wird mit
f()
, Outputs aufgerufenCode-Snippet anzeigen
quelle
Python 3, 31 Bytes
quelle
Stax ,
84 BytesOnline ausführen und debuggen!
Ein direkter Port dieser Antwort .
Alte Version, 8 Bytes
Online ausführen und debuggen!
Alternative Version mit einem ziemlich billigen Trick, der auf richtige Quines in fast jeder Sprache angewendet werden kann.
Online ausführen und debuggen!
weil
"34bL"34bL
in Stax steckt eine richtige Quine.Noch eine andere Version, bei der nur einzelne Zeichenfolgenliterale verwendet werden.
Online ausführen und debuggen!
Erläuterung
quelle
05AB1E , 13 Bytes
Ausgänge:
Probieren Sie es online!
quelle