Quinean Regex Tester

13

Tantangan ini cukup sederhana. Sebagai masukan, Anda mengambil ekspresi reguler.

Kemudian, Anda menampilkan kebenaran / kesalahan apakah kode sumber Anda cocok dengan ekspresi reguler atau tidak. Sesederhana itu! Hanya dua hal lagi:

  • Tidak ada quine builtin; Anda dapat, bagaimanapun, mengakses kode sumber kode dengan file IO, dll.
  • Ini adalah , jadi kode terpendek dalam byte menang!

Contoh

Jika kode sumber Anda diucapkan, abcinput dari a\wcakan mengembalikan true dan input dari a\dcakan kembali salah.

Maltysen
sumber
Contoh tolong?
Mama Fun Roll
1
@ CᴏɴᴏʀO'Bʀɪᴇɴ tidak, tidak apa-apa.
Maltysen
2
1. Saya rasa BRE dengan kelas karakter sederhana tidak cukup spesifik. Fitur BRE apa yang harus didukung? 2. \dtidak spesial di BRE; itu cocok dengan karakter d. 3. Memilih citarasa regex tertentu membatasi tantangan Anda pada bahasa yang mendukungnya, dan beberapa bahasa mendukung BRE. Apakah itu disengaja?
Dennis
2
Saya akan merekomendasikan menyerahkannya kepada penjawab. Jika bahasa x menggunakan rasa regex y secara default, biarkan ia menggunakan rasa itu dalam tantangan ini.
Dennis
6
@Maltysen Mengapa Anda tidak menambahkan contoh substring ke badan pertanyaan?
feersum

Jawaban:

14

Z shell, 12 byte

grep "$@"<$0

Zsh conditional hanya mengerti kode keluar, dan skrip keluar dengan 0 atau 1 sesuai.

Selain itu, ini mencetak string yang tidak kosong (kode sumber) untuk pertandingan dan yang kosong untuk ketidakcocokan, yang bisa berupa nilai kebenaran / falsy dalam kombinasi dengan test/ [.

Program membaca file sendiri, tetapi menurut komentar OP, ini diperbolehkan.

Dennis
sumber
3
Aaand Dennis menang. ¯ \ _ (ツ) _ / ¯
Conor O'Brien
Ini tidak berhasil. Itu rusak pada pola dengan spasi di dalamnya.
feersum
@feersum Whoops! Terima kasih telah menunjukkannya. Saya telah mengedit jawaban saya.
Dennis
2
Sekarang rusak jika ditulis ke file dengan spasi di namanya. Atau sebuah file bernama -v. Atau ...
Ben Millwood
@BenMillwood Saya biasanya mengatakan tidak menyimpannya dengan nama file seperti itu , tetapi beralih ke zsh membuatnya menjadi bukti peluru tanpa menambah jumlah byte.
Dennis
10

JavaScript (ES6), 39

(f=_=>!!`(f=${f})()`.match(prompt()))()
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
sumber
Baru saja memposting ini, tetapi Anda mengalahkan saya untuk itu. Kerja bagus!
Mama Fun Roll
12
Awal kode Anda seperti saya ketika mencoba memahami ini: (f = _ =)
Nico
9

Python 3, 119 byte

Ini hanya terlihat lebih keren, IMO (dan tidak membaca file).

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

Python 3, 67 byte

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

Ditambahkan setelah membaca komentar ini .

Zach Gates
sumber
intlebih pendek dari bool.
kucing
7

Julia, 64 54 byte

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

Ekspresi reguler Julia menggunakan PCRE. Saat membaca kode sumber file adalah celah standar untuk quines, dalam hal ini telah diizinkan secara eksplisit. Mengambil input tanpa baris baru.

Alex A.
sumber
3

Japt, 22 byte

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

Kerangka quine standar dengan beberapa byte ditambahkan agar sesuai dengan tantangan ini. Truthy = match (es), falsy = null. Cobalah 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.
Produksi ETH
sumber
2

Mathematica, 63 byte

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

Perhatikan ruang trailing. Menggunakan mekanisme quine Mma standar, dan menguji apakah cocok dengan regex.

LegionMammal978
sumber
2

Perl, 21 byte

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

17 byte plus 4 byte untuk -pl0. Jalankan seperti ini:

echo open | perl -pl0 quinean

File sumber harus berisi hanya kode di atas (no shebang, no trailing newline). Keluaran 1jika regex cocok dan string kosong jika tidak (string kosong adalah falsey di Perl).


Empat byte dapat disimpan jika input dijamin tidak berakhir pada baris baru:

open 0;say<0>=~<>

Jalankan seperti ini:

echo -n open | perl -M5.010 quinean

saymembutuhkan Perl 5.10+ dan harus diaktifkan dengan -M5.010. Menurut Meta , "itu-M5.010 jika diperlukan, gratis," memberikan skor 17 byte.

Bagaimana itu bekerja

Ini adalah variasi sederhana pada quine "kecurangan" standar:

open 0;print<0>

Ini membuka file dengan nama $0dan membaca isinya <0>.

$_=<0>=~$_membaca satu baris dari file sumber, melakukan pencocokan regex terhadap konten $_(yang dibaca oleh -pflag), dan memberikan hasilnya kepada $_. -pmencetak $_secara otomatis di akhir.

IniSuitIsBlack Tidak
sumber
2

Jolf, 18 15 byte

Mendukung rasa JS dari RegEx, saya harap tidak apa-apa. Coba di sini! .

 h$code.value#i

Berkomentar:

  $code.value#      the document's element "code" (the program container)
_h            i     and output if it has (matches) the input string (i.e. regex)
Conor O'Brien
sumber
Di browser mana ini berfungsi? Baik Chrome dan Firefox mengeluh bahwa x.stepitu bukan suatu fungsi.
Dennis
@ Dennis Huh. Saya pasti telah memecahkan interpreter tadi malam. Apa lagi yang salah? Saat ini saya tidak dapat men-debug, berada di sekolah.
Conor O'Brien
Baik. Sekarang tambahkan jalan pintas ke elemen "kode" dokumen sehingga kita bisa membuatnya lebih pendek.
user48538
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ini juga memberikan kesalahan referensi untuk math.
Dennis
@ Dennis Ah, itu sebabnya. Saya lupa memperbarui HTML, saya menambahkan math.js. Saya akan merevisi ketika saya tiba di rumah, jika itu belum terlambat. (Dalam waktu sekitar 4 jam)
Conor O'Brien
1

𝔼𝕊𝕄𝕚𝕟, 14 karakter / 26 byte (tidak kompetitif)

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

Try it here (Firefox only).

Menggunakan versi dengan perbaikan bug yang ditulis setelah tantangan.

Penjelasan

⟮‼(ⒸⅩ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

CATATAN: Salin blok BUKAN operator quine. Mereka dimaksudkan untuk menjadi alternatif yang lebih fleksibel untuk deklarasi variabel.

Mama Fun Roll
sumber
1
Saya pikir Anda dapat menyimpan byte dengan mengubah ke 10.
lirtosiast