Pertanyaan ini diinspirasi oleh, dan merupakan kebalikan dari yang ini .
Dennis ( E
), Doorknob ( D
), Martin ( M
) dan Chris ( C
) telah memesan pizza. Pizza persegi panjang dibagi menjadi potongan-potongan persegi, masing-masing ditandai dengan pemakan yang dituju.
Tulis program atau fungsi yang diberi pizza persegi panjang yang terdiri dari 0 atau lebih dari setiap huruf menentukan apakah:
Setiap irisan untuk setiap orang terhubung dengan jalur . Ini berarti bahwa semua huruf yang sama harus berbatasan langsung dengan satu sama lain (tidak ada koneksi diagonal).
Jumlah irisan per orang adalah sama untuk semua.
Anda harus menampilkan nilai true / falsy dengan baris tambahan opsional yang menunjukkan apakah pizza yang diberikan itu adil atau tidak.
Testis yang valid:
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEDMMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DEMC
DD
EE
MC
MC
EEDDMMMCCC
EEEDDDMMCC
Testis tidak valid:
EDM
EDMCCMDE
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEMDMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DDMMEECC
DMMEECCC
Kode terpendek dalam byte menang.
DDDDDDDDDDDDD
<- pizza yang adilJawaban:
Pyth, 53 byte
Demonstrasi
Ini pada dasarnya adalah pengisian banjir untuk setiap huruf, diikuti oleh cek bahwa semua set yang dihasilkan berukuran sesuai.
Untuk mengisi banjir, ini dimulai dengan kemunculan paling kiri atas setiap huruf, kemudian menghasilkan semua tetangga lokasi yang ditemukan sejauh ini, menyaring lokasi dengan huruf yang tepat, dan mengulangi sampai set berhenti berubah.
sumber
Siput , 129
Mencetak 1 untuk pizza yang adil dan 0 untuk pizza yang tidak adil.
Versi yang diperluas:
&
berarti bahwa polanya harus cocok di semua lokasi di grid. Baris pertama memeriksa jumlah E, D, M, C. yang sama, menggunakan instruksi teleportt
, yang merupakan cara terbaik untuk membuat program dengan kompleksitas faktorial. Jika input memiliki irisan berukuran tidak sama dengan beberapa unit untuk masing-masing dari 4 mod, program akan lebih atau kurang menggantung selamanya. Setelah itu, ada tanda centang untuk jalan yang berdekatan ke contoh kiri atas dari mana huruf dimulai pola.sumber
CJam, 93
Cobalah online
Ini sangat lama karena CJam (belum) memiliki built-in fill banjir atau union-find. Saya menerapkan pencarian serikat dalam program ini.
Penjelasan:
sumber
JavaScript (ES6), 153
166Menggunakan string template, ada baris baru yang signifikan dan dihitung
Tes menjalankan cuplikan di FireFox.
sumber
Javascript ES6, 360
Memeriksa jumlah C, D, E, M yang sama, lalu mengisi banjir dan memeriksa surat-surat yatim. Bukan pemenang, tetapi saya harus mencoba.
Biola
sumber
JavaScript ES6,
328318316269178Penjelasan:
sumber
l=>{...}
baik-baik sajak=(o)=>
untuk menghemat 2 byte lagi. Fungsi tanda panah parameter tunggal tidak perlu tanda kurung.