Terinspirasi oleh, dan untuk mengenang, kejeniusan kita yang terkasih,
MENINGGAL DUNIA
Dia menemukan dan mengimplementasikan dfns - magnum opus dan subjek tantangannya.
Untuk yang berminat: dokumentasi dan video dfns lengkap terbaru bersama John .
Tugas
Diberikan kode sumber ASCII, jawab di mana dari empat kategori berikut miliknya:
Dyadic dop
Monadic dop
Dfn
Lain
Anda dapat mengembalikan empat nilai yang konsisten, tetapi harap sebutkan pemetaan Anda jika tidak jelas.
Detail
Anda dapat mengasumsikan bahwa kode sumber selalu diawali dengan penjepit keriting pembuka {
dan berakhir dengan penjepit keriting penutup }
.
Kawat gigi bersarang secara rekursif dapat terjadi (misalnya {{{}}}
), tetapi kategori 1-3 tidak pernah memiliki kedalaman penyangga kurung di bawah 1 (begitu {}{}
juga "Lainnya") dan semua kawat gigi harus seimbang (demikian {{}
juga "Lainnya").
Karakter dalam konteks berikut pada baris diabaikan:
Di sebelah kanan
#
(komentar):significant#ignored
Diapit tanda kutip tunggal
'
...'
(yaitu dalam string):significant'ignored'significant
(ini berlaku untuk#
juga:'#'significant
)Di sebelah kanan kutipan yang tidak berpasangan
'
(pairing quotes dari kiri):significant'ignored
Dalam kurung kurawal level satu (yaitu tidak termasuk kurung bersarang):
Dyadic dops berisi frasa yang tidak terputus
ww
Dops monadik tidak mengandung
ww
, tetapi mengandungaa
Dfns tidak mengandung juga
ww
tidakaa
Uji kasus
Dyadic dops
{ww}
{
www
}
{
''ww'
}
{aa
ww}
{'#''#'ww?aa}
Dops monadik
{aa}
{aaaa}
{aa{ww}'ww'}
{w#w'
aa'
}
{aaw*w}
{w'\'aa\''}
Dfns
{}
{a a}
{aA}
{
{aa}
}
{w
w''w#
w}
{{
}}
{w\'aa\'}
Lain
{}{}
{{}
{}}
{ww}}
{}
{}
{ww}{}
{#}
{'
'}
{'#\'ww?aa'}
-> lainnya?)''
(apostrof dalam string, dapat juga diuraikan sebagai dua string yang berdekatan untuk tantangan ini)?'abc''def'
diurai sebagai satu atau dua string untuk tantangan ini.Jawaban:
JavaScript (ES6),
145 ... 138136 byteCobalah online!
Versi alternatif
Bagaimana?
String input adalah karakter yang diuraikan berdasarkan karakter.
Terjemahan karakter ke dalam kode
Variabel yang menggambarkan status parser
Variabel berikut digunakan selama penguraian:
aa
telah ditemukanww
telah ditemukanHasil akhir
sumber
Jelly ,
50 48 4645 byteTautan monadik yang menerima daftar karakter yang menghasilkan:
Cobalah online! Atau lihat test-suite .
menggunakan kutipan Python untuk menghindari kemungkinan mengevaluasi input sebagai kumpulan atau kamus Python
Bagaimana?
sumber
Bersih ,
309293284 byteKami bisa lolos dengan hanya menggunakan 3 nama variabel pada satu waktu, jadi kami akan memanggil mereka
a
,p
danl
.Cobalah online!
Menentukan fungsi
$ :: [Char] -> Int
dan beberapa pembantu, memberikan pemetaan:0
: Lainnya1
: Dyadic dop2
: Monadic dop3
: DfnDiperluas (versi pertama), dan dengan lebih dari 3 nama variabel:
sumber
Retina 0.8.2 , 91 byte
Cobalah online! Tautan termasuk test suite. Penjelasan:
Hapus string dan komentar.
Hapus tanda kurung yang cocok, berusahalah dari bagian terdalam, tetapi tinggalkan tanda kurung pertama dan terakhir.
Jika kami tidak mencocokkan tanda kurung maka ini adalah Lainnya.
Kalau tidak, jika kita miliki
ww
maka ini adalah Dyadic Dop.Kalau tidak, jika kita miliki
aa
maka ini adalah Monadic Dop.Kalau tidak, jika ini adalah sesuatu yang tidak tercakup di atas maka ini adalah Dfn.
sumber