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.


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.


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


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 .


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.


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.

2

Mathematica, 63 byte

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

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


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.


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)

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.


1
Saya pikir Anda dapat menyimpan byte dengan mengubah ke 10.
lirtosiast
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.