Diese Herausforderung ist ziemlich einfach. Als Eingabe nehmen Sie einen regulären Ausdruck.
Dann geben Sie eine Wahrheit / Falschmeldung darüber aus, ob Ihr Quellcode mit dem regulären Ausdruck übereinstimmt oder nicht. So einfach ist das! Nur noch zwei Dinge:
- Keine quine builtins; Sie können jedoch über die Datei IO usw. auf den Quellcode des Codes zugreifen.
- Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes !
Beispiel
Wenn Ihr Quellcode "say" wäre, würde abc
eine Eingabe von " a\wc
true" und eine Eingabe von " a\dc
false" zurückgeben.
code-golf
quine
regular-expression
Maltysen
quelle
quelle
\d
ist nicht speziell in BRE; es passt zum Charakterd
. 3. Wenn Sie eine bestimmte Regex-Variante auswählen, beschränkt sich Ihre Herausforderung auf Sprachen, die diese unterstützen, und nur wenige Sprachen unterstützen BRE. Ist das beabsichtigt?Antworten:
Z-Shell, 12 Bytes
Zsh-Bedingungen verstehen nur Exit-Codes, und die Skripte werden entsprechend mit 0 oder 1 beendet.
Außerdem wird eine nicht leere Zeichenfolge (der Quellcode) für eine Übereinstimmung und eine leere Zeichenfolge für eine Nichtübereinstimmung ausgegeben, die als wahrheitsgemäße / falsche Werte in Kombination mit
test
/ angegeben werden kann[
.Das Programm liest eine eigene Datei, laut diesem Kommentar des OP ist dies jedoch zulässig.
quelle
-v
. Oder ...JavaScript (ES6), 39
quelle
Python 3, 119 Bytes
Das sieht einfach cooler aus, IMO (und es liest die Datei nicht).
Python 3, 67 Bytes
Hinzugefügt nach dem Lesen dieses Kommentars .
quelle
int
ist kürzer alsbool
.Julia,
6454 BytesJulia reguläre Ausdrücke verwenden PCRE. Während das Lesen des Quellcodes der Datei eine Standardlücke für Quines darstellt, wurde dies in diesem Fall ausdrücklich zugelassen. Nimmt Eingaben ohne abschließende Zeilenumbrüche entgegen.
quelle
Japt, 22 Bytes
Standard-Quine-Framework mit einigen zusätzlichen Bytes, um dieser Herausforderung gerecht zu werden. Wahrheit = Übereinstimmung (en), falsch = null. Probieren Sie es online!
quelle
Mathematica, 63 Bytes
Beachten Sie das nachfolgende Leerzeichen. Verwendet den Standard-Mma-Quine-Mechanismus und prüft, ob er mit dem regulären Ausdruck übereinstimmt.
quelle
Perl, 21 Bytes
17 Bytes plus 4 Bytes für
-pl0
. Laufen Sie wie folgt:Die Quelldatei darf nur den obigen Code enthalten (kein Schebang, kein abschließender Zeilenumbruch). Ausgänge
1
Wird wenn der reguläre Ausdruck übereinstimmt, und der leere String, wenn dies nicht der Fall ist (der leere String ist in Perl falsch).Vier Bytes können gespeichert werden, wenn die Eingabe garantiert nicht in einer neuen Zeile endet:
Laufen Sie wie folgt:
say
erfordert Perl 5.10+ und muss mit aktiviert werden-M5.010
. Gemäß Meta ", die-M5.010
, wenn nötig, frei", was eine Punktzahl von 17 Bytes ergibt.Wie es funktioniert
Dies ist eine einfache Abwandlung der Standard-Quine zum "Betrügen":
Dies öffnet die Datei mit dem Namen in
$0
und liest den Inhalt mit<0>
.$_=<0>=~$_
Liest eine Zeile aus der Quelldatei, vergleicht einen regulären Ausdruck mit dem Inhalt von$_
(der vom-p
Flag gelesen wurde ) und weist das Ergebnis zu$_
.-p
druckt$_
automatisch am Ende.quelle
Jolf,
1815 BytesUnterstützt den JS-Geschmack von RegEx, ich hoffe das ist okay. Probieren Sie es hier aus! .
Kommentiert:
quelle
x.step
keine Funktion ist.math
.𝔼𝕊𝕄𝕚𝕟, 14 Zeichen / 26 Byte (nicht wettbewerbsfähig)
Try it here (Firefox only).
Verwenden einer Version mit Fehlerkorrekturen, die nach der Challenge geschrieben wurden.
Erläuterung
HINWEIS: Kopierblöcke sind KEINE Quine-Operatoren. Sie sind als vielseitigere Alternativen zu Variablendeklarationen gedacht.
quelle
Ⅹ
bis 10.