(basierend auf diesem Beitrag und der anschließenden Diskussion im Chat - auch vielen Dank an Dennis für TIO!)
Die Herausforderung
Wählen Sie eine Sprache aus, die derzeit auf der TryItOnline-Website verfügbar ist , z. B. PowerShell . Schreiben Sie Code in dieser Sprache auf dieser Seite, ohne dass Eingaben erforderlich sind. Wenn Sie auf die Schaltfläche Ausführen klicken, entspricht die Ausgabe auf dieser Seite genau der im Feld "Nur URL" beim Speichern / Speichern angegebenen Klicken Sie stattdessen auf die Schaltfläche.
Angenommen, für ein fiktives Beispiel aaa
war dies der Code für eine Lösung in PowerShell. Dann sollte das Ergebnis des Klickens auf Ausführen mit aktiviertem aaa
Code https://tio.run/#powershell
ausgegeben werden. Dies https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
ist auch das Feld "Nur URL", wenn auf die Schaltfläche Speichern / Speichern geklickt wird.
Wertung
Die resultierende URL ist Ihr Beitrag zu dieser Herausforderung. Der Gewinner ist die kürzeste URL, gemessen in Bytes. Im obigen Beispiel ist die URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA
die Übermittlung an die Challenge mit 44 Bytes . Die kürzeste URL, die den Rest dieser Herausforderung erfüllt, gewinnt die Herausforderung und verdient Brownie-Punkte (Punkte nicht einlösbar). Unter der Voraussetzung, dass eine bestimmte Mindestlänge möglich ist, gewinnt die frühere Einreichung, wenn zwei Einreichungen gleich lang sind.
URL-Generierung
Dies ist der Start des URL-Generierungsalgorithmus im Repository. Sie können sehen, wie der Hauptcodebereich eingenommen wird, ob zusätzliche Elemente angehängt werden, die Zeichenfolge entleert und Base64 konvertiert und dann ##
vorangestellt wird usw. Ich werde hier nicht näher darauf eingehen. Teil der Herausforderung ist es, zu analysieren und zu verstehen, wie die URLs generiert werden, um potenzielle Macken in diesem Algorithmus auszunutzen.
Regeln / Erläuterungen
- Der eigentliche Code sollte keine Eingabe annehmen und nur die Quine-URL als Ausgabe erzeugen.
- Das heißt , die nur Textfelder , die ausgefüllt werden müssen , wenn sie in der URL zu klicken , sind dieCode
,Header
,Footer
oder „Compiler - Flag“ Felder entspricht; Die FelderInput
undArguments
sind verboten und müssen leer / unbenutzt bleiben. Klicken Sie auf die Schaltfläche Ausführen , um nur dasOutput
Feld zu ändern . Bei dieser Herausforderung wird dasDebug
Feld in allen Situationen ignoriert. - Für den Code gelten, soweit möglich, die üblichen Quine-Regeln (der Code kann beispielsweise keinen eigenen Quellcode über lesen
.code.tio
). - Bitte fügen Sie Ihrer Einreichung eine Beschreibung der Funktionsweise des Codes bei.
- Das Übermitteln einer "betrügerischen" Quine durch Übermitteln einer Git-Pull-Anforderung an das TIO-Repository zum Erstellen einer "Trick" -URL oder -Verknüpfung oder dergleichen ist nicht zulässig.
- Ebenso ist das Senden einer Pull-Anforderung zum Aktualisieren einer bestimmten Sprache zur Erstellung einer "Trick" -URL nicht zulässig.
- Bitte seien Sie nett zu Dennis 'Servern und missbrauchen Sie sie nicht und versuchen Sie keine Exploits für diese Herausforderung.
quelle
https://tio.run/##a+a
die zu einem Programm verknüpft , dass die Ergebnissehttps://tio.run/##a+a
, ist es gültig , auch den Link zäh erzeugtensaveState
gewesen wärehttps://tio.run/##a@a
Antworten:
Python 2 , URL-Länge = 170 Byte
Probieren Sie es online!
Dies beruht auf drei Zufällen:
=
.+
Zeichen.quelle
Bash ,
174166165157 BytesDies kodiert das folgende Bash-Programm.
Probieren Sie es online!
Vielen Dank an @ jimmy23013 für das Golfen von 8 Bytes von meinem ursprünglichen Ansatz, für einen Ansatz, der ein weiteres Byte gespart hat, und für das Golfen von weiteren 8 Bytes von diesem Ansatz!
quelle
base64 | tr -d \\n
in mein Terminal getippt habe ... Danke!Pyth , URL-Länge = 134 Byte
Code:
Probieren Sie es online!
Verwendet Pyths Zlib builtin (
.Z
) und eine Inline-Implementierung von base64.Wie es funktioniert
Die äußere Bühne:
Die innere Stufe, erhalten durch Ersetzen von Leerzeichen in der Zeichenfolge
J
durch doppelte Anführungszeichen:(Es ist schade, dass das Eingabefeld nicht zulässig ist, sonst hätte ich eine 118-Byte-Lösung .)
quelle
PowerShell, 274 Byte
Es ist alles dank des folgenden Snippets:
Probieren Sie es online!
quelle
JavaScript (Node.js) , 214 Byte
Probieren Sie es online!
quelle