Schreiben Sie ein Programm, das eine Verbindung zu dieser Site herstellt, die Antwort, in der es veröffentlicht wurde, herunterlädt, seinen eigenen Quellcode extrahiert und ihn ausgibt. Die Ausgabe muss mit dem Quellcode identisch sein. Kürzester Code (in Bytes) gewinnt.
Regeln:
- Es sind keine URL-Kürzungen zulässig.
- Die Antwort muss ein reguläres Format haben - eine Überschrift mit Name und Größe der Sprache, optionale Beschreibung, Codeblock, optionale Beschreibung und Erläuterung. Keine unnatürlichen Begrenzer erlaubt.
- Die Ausgabe muss aus dem eigentlichen Codeblock stammen, der auf der Site veröffentlicht wurde.
- Die Funktionalität darf nicht von der Position in der Antwortliste abhängen. es sollte funktionieren, auch wenn es mehrere seiten gibt und die antwort es nicht auf der ersten.
- Neu: Besonderer Hinweis für Antworten, die in einem Browser ausgeführt werden sollen: Es ist in Ordnung, sie in der Codegolf-Domäne auszuführen (um der Richtlinie des gleichen Ursprungs zu entsprechen), aber die Domäne und der Pfad sollten in die Lösung aufgenommen werden, um mach es fair.
code-golf
quine
internet
self-referential
aditsu
quelle
quelle
Antworten:
Bash + Coreutils + Lynx-Browser, 61 Byte
Danke an @FDinoff für die Tipps:
quelle
codegolf.stackexchange.com/posts/28164/body
Und es ignoriert Kommentare. Ich denke auch, dass es innerhalb der Regeln liegt, dass Sie es verwenden können ...Ruby,
15518619514813811097 ZeichenIch musste es eine Zeile machen, da es sonst Zeilenumbrüche
\n
anstelle von tatsächlichen Zeilenumbrüchen ausgibt.+31 Zeichen, da ich nicht bemerkt habe, dass einige Zeichen ausgeblendet wurden.+9 Zeichen, um den lästigen Backslash loszuwerden.Die Erklärung
Lassen Sie uns dies zuerst ein wenig verschönern. Allerdings muss ich in diesem Code eine etwas ... interessante Schreibweise verwenden. Ich kann in diesem Beitrag aus später erläuterten Gründen überhaupt keine Semikolons verwenden, daher verwende ich
{SEMI}
stattdessen Semikolons.Okay, jetzt lass uns das durchgehen. Die ersten beiden Zeilen sind ziemlich selbsterklärend - sie rufen den HTML-Text dieser Antwort ab.
Nun ist die letzte Zeile hier die interessante. Sehen Sie das scheinbar nutzlose Semikolon am Ende des Codes? Es ist absolut erforderlich, und hier ist der Grund.
Zuerst
resp.match
extrahiert der Code gedruckt werden. Die regexp es dafür verwendet , ist der Trick:/req.+{SEMI}/
. Es ergreift den Anfang des Codes,REQuire'net/http'
indem es nachreq
(re
würde meinREputation
) sucht . Dann findet es das Ende des Codes, indem es nach einem Semikolon sucht! Da+
es standardmäßig gierig ist, wird es so lange fortgesetzt, bis es das Semikolon findet, das das Ende des Codes kennzeichnet. Sehen Sie, warum ich keine Semikolons mehr verwenden kann?Danach muss ich nichts mehr außer Acht lassen, da Ventero überhaupt nichtsDies ist aufgrund der neuen URL nicht mehr erforderlich. Danach wurde der ursprüngliche Code abgerufen! (Hinweis: Ich kann auch kein kaufmännisches Und verwenden, da dieses HTML-codiert wird, wodurch ein Semikolon erstellt wird.)\
mehr verwendet. Alles, was ich tun muss, ist das{AMPERSAND}
Umrüsten in{AMPERSAND}amp{SEMI}
, was einfach durch Entfernen desamp{SEMI}
Teils erreicht werden kann.quelle
puts
; es könnte aber mitprint
meh behoben werden . Stellen Sie sich einfach vor, der Code enthält eine nachgestellte neue Zeile, obwohl SE diese nicht anzeigen kann.http://codegolf.stackexchange.com/a/28159
würde das gleiche Ergebnis wie bei Ihnen geben und einige Zeichen sparen.PowerShell -
6962quelle
irm
ist der Alias fürInvoke-RestMethod
und wurde mit PowerShell v3 Core eingeführt. computerperformance.co.uk/powershell/powershell3-alias.htmJavaScript -
1231221019592918786114Läuft in der Konsole Ihres Webbrowsers auf dieser Seite. Getestet auf dem neuesten Chrome
und Firefox.Bearbeiten: +28 Bytes, um die vollständige Domain hinzuzufügen.
Firefox mag meinen Regex-URL-Trick mit diesem Update nicht mehr :(
Hier ist die regelbrechende 86-Byte-Lösung:
quelle
codegolf.stackexchange.com/
der URL hinzufügen .Ruby +
Wget+Gunzip,159868271Mit Tipp von @FDinoff zu verwenden
http://codegolf.stackexchange.com/posts/28173/body
.Geprüft. Vielen Dank an @ace und @Bob für die Befehlszeilenoptimierung.
quelle
wget
wie in kombinierenwget -qO- url
. Außerdem benötigen Sie in bash keine doppelten Anführungszeichen für die URL, sodass dies möglicherweise auch für Sie funktioniert.http://
.CJam - 53
Ich erstelle dieses Community-Wiki, da ich meine eigene Frage beantworte und nicht wirklich konkurrieren möchte: p
Danksagung an FDinoff für die URL-Auswahl.
quelle
);
sieht nicht zu smiley für mich ...Rebmu, 91 Zeichen
Aufgrund des Catch-22 muss ich posten, um die URL dieser Antwort zu erhalten. : - / Okay, verstanden.Rebmu ist ein Dialekt von Rebol, und Sie können alles darüber lesen . Der äquivalente Rebol wäre hier:
Rebols PARSE ist eine Art hochkompetente Antwort auf RegEx. Es startet eine Parser-Position der Eingabe (die eine beliebige Reihe sein kann, einschließlich Strukturblöcken ... Binärdaten ... oder Zeichenfolgentypen) . Die Regeln sind eine Sprache für die Bewegung der Analyseposition.
Tags und URLs sind in der Sprache eigentlich nur Strings unter der Haube. Aber sie sind "gewürzt", und da Rebol dynamisch eingegeben wird, können Sie diesen Typ überprüfen. READ weiß beispielsweise, dass, wenn Sie eine URL-gewürzte Zeichenfolge angeben, diese an einen Schema-Handler gesendet werden sollte, um das Lesen durchzuführen. (In diesem Fall der für HTTP registrierte). Sie erhalten standardmäßig UTF-8-Bytes zurück. Daher verwenden wir to-string, um dies zu dekodieren und eine Reihe von Codepunkten in einer normalen Unicode-Zeichenfolge abzurufen.
Im Fall des Parser-Dialekts wird die Erkennung eines Tag-Typs nur als Zeichenfolge abgeglichen, die dem Tag ähnelt. THRU ist eine Anweisung mit der Bedeutung "Überspringen, bis die folgende Regel übereinstimmt, und dann die Übereinstimmungsposition an das Ende des gerade Übereinstimmungsgegenstands setzen". (TO ist das Analogon, das übereinstimmt, aber die Analyseposition vor dem Element belässt).
Also rasten wir an der
<a name="28154">
. Vorbei . Dann überqueren wir das nächste Vorkommen von<code>
, wobei sich unsere Analyseposition jetzt direkt nach dem befindet>
. Mit dem Befehl COPY von PARSE können wir dann Daten in eine andere Regel kopieren. In diesem Fall lautet diese Regel[TO </code>]
..., sodass wir bis dahin alles in die Variable C aufnehmen<
.Cool , was? :-)
Technisch könnte ich mehr davon abschneiden, zum Beispiel durch Suchen
TO "</"
und das spart drei Zeichen - es ist nicht nötig, das gesamte</code>
End-Tag abzugleichen, wenn es nur geht</
. Ähnliche Argumente könnte ich für das Start-Tag machen. Aber Rebmu ist etwa gebildete Golf ... auch wenn Sie vielleicht denken , es auf den ersten seltsam aussieht!UPDATE : Der
/body
Trick ist aus dem Sack, aber ich werde ihn genauso belassen wie er ist ... weil ich denke, dass er auf diese Weise lehrreicher ist.quelle
Java jetzt 634, 852, war 1004
Code wurde aktualisiert; danke für vorschläge. Golf: Ersetzt jetzt & gt mit>
Zum Testen einreichen, ich werde es in Kürze bearbeiten und ausprobieren. Muss x> 1 in x> 2 ändern, da die Testzeichenfolge auch in meinem Code enthalten ist. Hinweis: Code Golf ersetzt> Symbol zu & gt.
quelle
//bacchus
?*
Importe verwenden, um viel Code zu sparen.throws Exception
anstatt zu versuchen, irgendetwas zu handhaben. Ich denke auch, dass die Verwendung eines Scanners anstelle eines BufferedReader einfacher wäre, zumal Sie das Trennzeichen auf setzen könnten//bacchus
, was die Dinge etwas einfacher machen würde ...Python,
175167 BytesDies verwendet zwei externe Bibliotheken; Ich habe nicht gelesen, dass es nicht autorisiert ist.
Längerer, aber schöner aussehender Code:
quelle
questions
in der URL kann ersetzt werden durchq
:http://codegolf.stackexchange.com/q/28154
bs4, requests
(Zeile 1) kann entfernt werden, um 1 Byte zu reduzieren.JavaScript, 228
Läuft auf dieser Seite.
quelle
if(this.readyState == this.DONE)
Einblick in die Funktion.Haskell,
563613BytesGeprüft. Hat Seitenunterstützung über "älteste Beiträge" -Funktion. Verwendet eine Quine-Line-Struktur, um herauszufinden, was gedruckt werden soll. Das
import Control.Monad
liegt nur daran>>=
, dass>
in HTML generiert wird .quelle
Javascript + jQuery,
87, 67Ich bin nicht sicher, ob ich jQuery verwenden darf, aber:
Javascript + jQuery, falls auf dieser Seite ausgeführt:
27, 25Zum Spaß, wenn es hier ausgeführt würde:
$('[id$=28268] pre').html()
quelle
$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
w3m 45 Zeichen
quelle
Dart, 164
Ich dachte, ich würde es in Dart versuchen, es macht Spaß, imo zu benutzen.
Dies kann in der Konsole in DartEditor ausgeführt werden, erfordert jedoch das in pubspec.yaml hinzugefügte http-Paket
Ungolfed-Version:
quelle
R 114 Zeichen
Keine wirkliche Magie hier: Es nimmt den Wert des Feldes zwischen den HTML-Tags
<code></code>
. Benutzt die BibliothekXML
(wie man im Code ganz offensichtlich sehen kann). Gibt das Ergebnis als stdout aus.quelle
Java
300,294Eine verbesserte Version der Antwort von Bacchusbeale, die:
Scanner
, um eine Schleife über den Eingang zu vermeidenAktualisiert:
<code>[...]</code>
als Begrenzer für die Suche (tatsächlich unter Verwendung des regulären Ausdrucks "./?[c[ode\W"), um zu vermeiden, dass dekodiert werden muss<
und>
- das "\ W" anstelle des kürzeren "erforderlich ist." um zu vermeiden, dass ein Teil der URL mit dem Beitrag übereinstimmt, der leider 2 Zeichen kostet, und die eckigen Klammern um c verhindern, dass der reguläre Ausdruck selbst übereinstimmt).quelle
W3M 55 Byte
Basierend auf @DigitalTrauma
quelle
Ruby,
237215146132quelle
Verarbeitung, 90
Edit: Endlich ist es soweit!
quelle
Bash + Awk, 71 Bytes
quelle
http://
.Javascript, 138
Dies funktioniert unter der Annahme, dass die Seite in weniger als 99 ms geladen wird. Es muss auch über eine Konsole ausgeführt werden, die auf einer codegolf.SE-Seite geöffnet ist, da dieselbe Ursprungsrichtlinie gilt.
quelle
http://codegolf.stackexchange.com/a/28160
anstelle vonhttp://codegolf.stackexchange.com/a/28160/12551
Perl 5.10,
155127122117 BytesVerwenden
XML::LibXML
.quelle
Shell und xmllint, 82 Bytes
quelle
Python, 164
Funktioniert durch Extrahieren des Texts zwischen den Code-Tags. Es ist ziemlich lang, aber es funktioniert immer richtig, es sei denn, die HTML-Seite wird direkt bearbeitet oder ein neuer Codeblock wird vor dem folgenden hinzugefügt (ein Codeblock danach sollte keine Auswirkung auf die Ausgabe des Programms haben).
quelle