Skenario
Saya sering memasak lasagna, tetapi saya juga memiliki beberapa kesalahan. Karena saya sering mengulangi kesalahan ini, saya pikir saya mungkin bisa melakukan program yang memeriksa jika saya melakukan semuanya dengan benar.
Lasagna yang benar
Lasagna yang valid adalah
- Lebar minimal 5 kolom
- Setidaknya 4 lapisan
- Tidak termasuk keju ekstra
- Lapisan atas adalah keju (diwakili oleh
,
) - Lapisan kedua adalah saus (diwakili oleh salah satu
@
atau#
) - Setelah itu lapisan-lapisan tersebut berganti (1 lapis saus, 1 lapis mie (diwakili oleh salah satu
~
atau-
)) - Setiap kolom dapat memiliki satu atau dua lapis keju
Program
Sebaiknya
- mengambil string lasagna sebagai input
- string multiline
- array string
- string hanya berisi karakter
,@#~-
- Persegi panjang
- Empuk dengan ruang jika perlu
- Keluarkan apakah itu lasagna yang valid
- Segala hal yang dahsyat dalam bahasa Anda jika valid
- Tidak ada atau apa pun yang salah dalam bahasa Anda
- menjadi baik
- program lengkap
- sebuah fungsi
- yang hanya menggunakan fungsionalitas yang diterapkan sebelum 14/12/2016
Uji kasus
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> truthy
@@@#
----
@@##
----
@###
--> falsy (cause of cheese and width (You don't have to print the stuff in the brackets))
,,,,,
-----
@####
-----
@@@@@
--> falsy (have the sauce as last layer)
Kriteria menang
Itu
- terpendek
- dalam byte
- kode-golf
- fungsional
pengiriman menang.
code-golf
ascii-art
decision-problem
Roman Gräf
sumber
sumber
,@#~-
dengan pengecualian spasi sebagai padding, tetapi test case pertama berisi spasi di tengah garis.Jawaban:
Retina ,
3834 byteTerima kasih kepada Grimy karena telah menghemat 4 byte.
Miliki regex dengan lasagna Anda.
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Diasumsikan bahwa input diakhiri dengan linefeed tambahan. Mencetak
1
(cocok) untuk lasagn yang valid dan0
(tidak cocok) untuk lasagn yang tidak valid.Cobalah online!
Penjelasan
Ini hanya sebuah standar .NET regex yang cocok dengan input, kecuali bahwa Retina menyediakan alias
¶
untuk linefeeds atau\n
.Karena input dijamin persegi panjang, kita hanya perlu memeriksa lebar lasagna di salah satu baris.
sumber
¶[-~]*
alih-alih(¶[-~]+|$)
, menghemat 4 byte.Grime , 43 byte
Cobalah online! Mencetak
1
untuk pertandingan dan0
tanpa pertandingan.Penjelasan
Grime dirancang untuk mencocokkan pola dua dimensi, yang dibangun sepotong demi sepotong dari pola yang lebih kecil. Saya mendefinisikan lapisan atas opsional pertama, kemudian lapisan lainnya dengan mengulangi garis vertikal.
sumber