Quinean Regex Tester


13

To wyzwanie jest dość proste. Jako dane wejściowe przyjmujesz wyrażenie regularne.

Następnie wyprowadzasz prawdę / falsey, czy kod źródłowy pasuje do wyrażenia regularnego. To takie proste! Jeszcze tylko dwie rzeczy:

  • Brak wbudowanych quine; możesz jednak uzyskać dostęp do kodu źródłowego kodu poprzez plik IO itp.
  • To jest , więc wygrywa najkrótszy kod w bajtach !

Przykład

Jeśli powiedziano twój kod źródłowy abc, dane wejściowe a\wczwracałyby wartość true, a dane wejściowe a\dczwracałyby wartość false.


Przykład proszę?
Mama Fun Roll

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ nie, w porządku.
Maltysen

2
1. Nie sądzę, by tylko BRE z prostymi klasami postaci był wystarczająco szczegółowy. Jakie funkcje BRE muszą być obsługiwane? 2. \dnie jest wyjątkowy w BRE; pasuje do postaci d. 3. Wybór konkretnego smaku wyrażenia regularnego ogranicza twoje wyzwanie do języków, które go obsługują, a kilka języków obsługuje BRE. Czy to celowe?
Dennis,

2
Poleciłbym pozostawienie tego użytkownikowi odpowiadającemu. Jeśli język x używa domyślnie wyrażenia regularnego y , pozwól mu użyć tego smaku w tym wyzwaniu.
Dennis,

6
@Maltysen Dlaczego nie dodasz przykładu podłańcucha do treści pytania?
feersum

Odpowiedzi:


14

Powłoka Z, 12 bajtów

grep "$@"<$0

Warunki warunkowe Zsh rozumieją tylko kody wyjścia, a skrypty zamykają się odpowiednio z 0 lub 1.

Ponadto drukuje niepuste ciągi (kod źródłowy) dla dopasowania i puste dla niedopasowania, które mogą być tak prawdziwe jak / fałsz w połączeniu z test/ [.

Program odczytuje własny plik, ale zgodnie z tym komentarzem OP, jest to dozwolone.


3
Wygrał Aaand Dennis. ¯ \ _ (ツ) _ / ¯
Conor O'Brien

To nie działa Łamie wzory ze spacjami w nich.
feersum

@feersum Whoops! Dzięki za zwrócenie na to uwagi. Zredagowałem swoją odpowiedź.
Dennis

2
Teraz psuje się, jeśli jest zapisany w pliku ze spacjami w nazwie. Lub plik o nazwie -v. Lub ...
Ben Millwood

@BenMillwood Zwykle powiedziałbym, że nie zapisuj go z taką nazwą pliku , ale przejście na zsh sprawia, że ​​jest on kuloodporny bez zwiększania liczby bajtów.
Dennis


9

Python 3, 119 bajtów

To po prostu wygląda fajniej, IMO (i nie odczytuje pliku).

(lambda i:print(bool(__import__('re').search(input(),i))))("(lambda i:print(bool(__import__('re').search(input(),i))))")

Python 3, 67 bajtów

print(bool(__import__('re').search(input(),open(__file__).read())))

Dodano po przeczytaniu tego komentarza .


intjest krótszy niż bool.
kot

7

Julia, 64 54 bajtów

r=readline;show(ismatch(Regex(r()),open(r,@__FILE__)))

Wyrażenia regularne Julia używają PCRE. Podczas gdy czytanie kodu źródłowego pliku jest standardową luką dla quinesów, w tym przypadku zostało to wyraźnie dozwolone. Pobiera dane wejściowe bez końca nowej linii.


3

Japt, 22 bajty

"+Q ³sAJ fU"+Q ³sAJ fU

Standardowa konstrukcja quine z kilkoma bajtami dodanymi, aby sprostać temu wyzwaniu. Truthy = match (es), falsy = null. Wypróbuj online!

         // Implicit: U = input string, A = 10, J = -1, Q = quotation mark
"..."+Q  // Take this string and concatenate a quotation mark.
³        // Repeat three times.
sAJ      // Slice off the first 10 and last 1 chars.
fU       // Match U to the result.

2

Mathematica, 63 bajty

StringMatchQ[ToString[#0, InputForm], RegularExpression[#1]] & 

Zwróć uwagę na spację końcową. Używa standardowego mechanizmu quine Mma i sprawdza, czy pasuje do wyrażenia regularnego.


2

Perl, 21 bajtów

open 0;$_=<0>=~$_

17 bajtów plus 4 bajty dla -pl0. Uruchom tak:

echo open | perl -pl0 quinean

Plik źródłowy musi zawierać tylko powyższy kod (bez shebang, bez końcowego znaku nowej linii). Wyprowadza, 1jeśli wyrażenie regularne pasuje, a pusty ciąg znaków, jeśli nie (pusty ciąg jest falsey w Perlu).


Cztery bajty można zapisać, jeśli wejście nie gwarantuje zakończenia nowej linii:

open 0;say<0>=~<>

Uruchom tak:

echo -n open | perl -M5.010 quinean

saywymaga Perla 5.10+ i musi być włączony za pomocą -M5.010. Według Mety „w -M5.010razie potrzeby jest bezpłatny”, co daje wynik 17 bajtów.

Jak to działa

Jest to prosta odmiana standardowej „oszustwa”:

open 0;print<0>

Spowoduje to otwarcie nazwanego pliku $0i odczytanie zawartości za pomocą <0>.

$_=<0>=~$_czyta jeden wiersz z pliku źródłowego, wykonuje wyrażenie regularne względem zawartości $_(które zostały odczytane przez -pflagę) i przypisuje wynik do $_. -pdrukuje się $_automatycznie na końcu.


2

Jolf, 18 15 bajtów

Obsługuje smak JS RegEx, mam nadzieję, że jest w porządku. Wypróbuj tutaj! .

 h$code.value#i

Skomentowano:

  $code.value#      the document's element "code" (the program container)
_h            i     and output if it has (matches) the input string (i.e. regex)

W jakiej przeglądarce to działa? Zarówno Chrome, jak i Firefox narzekają, że x.stepto nie jest funkcja.
Dennis

@Dennis Huh. Musiałem wczoraj zepsuć tłumacza. Co jeszcze jest nie tak? Obecnie nie mogę debugować, jestem w szkole.
Conor O'Brien

Dobry. Teraz dodaj skrót do elementu dokumentu „kod”, abyśmy mogli go skrócić.
user48538,

@ CᴏɴᴏʀO'Bʀɪᴇɴ Daje również błąd odniesienia dla math.
Dennis,

@Dennis Ah, właśnie dlatego. Zapomniałem zaktualizować HTML, dodałem math.js. Dokonam przeglądu, kiedy wrócę do domu, jeśli nie będzie za późno. (Za około 4 godziny)
Conor O'Brien

1

𝔼𝕊𝕄𝕚𝕟, 14 znaków / 26 bajtów (niekonkurencyjny)

⟮‼(ⒸⅩ222+ᶈ0)đï

Try it here (Firefox only).

Używanie wersji z poprawkami błędów napisanymi po wyzwaniu.

Wyjaśnienie

⟮‼(ⒸⅩ222+ᶈ0)đï // implicit: ï=input
⟮               // copy block: copy following code for later use
 (ⒸⅩ222+ᶈ0)   // take convert 10222 to char, add stuff inside copy block
‼           đï // check if input matches resulting string
               // implicit output

UWAGA: Bloki kopiowania NIE są operatorami quine. Mają być bardziej wszechstronnymi alternatywami dla deklaracji zmiennych.


1
Myślę, że możesz zaoszczędzić bajt, zmieniając na 10.
lirtosiast
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.