Hari ini adalah Purim di mana satu kebiasaan adalah untuk memberikan kue berbentuk segitiga dengan isian yang disebut hamantaschen (tunggal: hamantasch ). Kebiasaan lain adalah minum banyak.
Saya bukan tukang roti yang paling sempurna .... Saya memiliki begitu banyak hamantaschen berukuran tidak teratur untuk diberikan dan begitu banyak teman untuk diberikan kepada mereka! Jika saya mengirimi Anda gambar cookie saya, dapatkah Anda memberi tahu saya berapa banyak ukuran dan isinya? Tetapi karena Purim dan saya terlalu mabuk untuk membaca banyak kode, perlu kode sekecil yang Anda bisa.
Definisi
Ukuran
Hamantasch bisa berukuran berapa saja . Hamantasch terkecil adalah ukuran 1 dan terlihat seperti ini:
/\ --
-- \/
Terkadang, beberapa hamantaschen bisa tumpang tindih . Bentuk di bawah ini dihitung sebagai dua hamantaschen (satu ukuran 1, satu ukuran 2):
/\
/\ \
----
Beberapa hamantaschen telah diisi . Ini akan ditunjukkan dengan mengisi semua spasi putih di dalam dengan karakter. Perhatikan bahwa hamantaschen ukuran 1 tidak dapat diisi.
Kami akan memberi nama hamantaschen berdasarkan pengisian dan ukuran. Mari kita gunakan format <filling> <size>
dan jika tidak terisi, - <size>
(Anda bisa menggunakan spasi alih-alih -
, tetapi penurunan harga tidak seperti itu).
Inilah a . 2
, a . 4
, dan a - 3
:
/\
/./\
---- /./ \
\../ /./ \
\/ --------
Ini adalah @ 3
, a . 2
dan a - 4
:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
Ini sesuatu yang lebih sulit. Lihat bagaimana & 2
pengisian kurang dari yang Anda harapkan karena miring dari tumpang tindih - 3
? Memiliki - 1
, sebuah & 2
sebuah - 3
dan & 4
:
--------
\ \/&/
\ /\/
\/&/
\/
Memasukkan
Anda akan diberikan file teks atau string tunggal hamantaschen (opsional trailing newline dan opsional spasi tambahan spasi kosong untuk menjadi rata).
Batas
- Anda dapat mengharapkan string valid - yaitu, setiap karakter non-spasi putih berkontribusi pada hamantasch yang manis dan manis (mengapa membuang-buang adonan?).
- Anda juga dapat berharap itu diisi dengan benar atau tidak - yaitu, setiap hamantasch itu akan sepenuhnya diisi dengan karakter ASCII yang konsisten - ASCII 32 untuk tidak terisi, atau apa pun 32..127 untuk diisi (tidak termasuk
/
,\
dan-
). - Hamantaschen ini tidak ditumpuk dalam 3 ruang. Semua
/
dan\
akan terlihat. Semua-
yang tidak diblokir oleh/
dan\
akan terlihat. Pengisian terakhir datang. - Semua hamantaschen akan memiliki setidaknya setengah dari garis horizontal mereka (pembulatan ke atas) terlihat.
- Blok pengisian yang berdekatan hanya mengisi hamantasch terkecil yang mengelilinginya.
Keluaran
Kembalikan daftar "nama" semua hamantaschen yang dapat ditemukan memenuhi kriteria di atas. Outputnya bisa dalam bentuk apa pun yang Anda suka (string, hash, stdout, dll).
Uji kasus
Uji kasus # 1
Input # 1:
/\
/ /\
/\ / /@@\
/..\ / /@@@@\
---- --------
/\
/**\
/*/\*\
/*/..\*\
--------
Output # 1:
. 2
. 2
- 4
@ 3
* 4
Test Case # 2
Input # 2:
/\----
/\/\*\/
/ /\d\/
------
Output # 2:
- 3
- 2
d 2
- 1
* 2
- 1
Tes # 3
Input # 3:
----
\/\/
/\/\ /\
---- /::\
----
Output # 3:
- 1
- 1
- 2
- 1
- 1
- 2
: 2
Tes # 4
Input # 4:
/\/\
/ /\$\
-/--/\\
--/--\
/xxx/\
/xxx/##\
---/----\
/ \
--------
Keluaran # 4:
$ 2
x 4
- 3
- 2
- 4
- 1
- 1
# 2
Kasus Uji Tidak Valid # 5
Memasukkan:
/\
\/
Keluaran:
Anda tidak perlu menangani ini.
/
dan \
, dan -
akan selalu mengisi truf.
(1,0)
, mati oleh +1
. Tetap saja, saya tahu apa yang Anda maksud, dan saya tidak setuju. Indikasi apa yang ada (2, 2)
di tengah atas - 2
dan bukan hanya kanan atas dan kiri atas - 1
? Tidak ada yang bisa saya lihat. Dan logika yang sama berlaku untuk (3, 2)
. Kecuali Anda ingin menambahkan aturan untuk mengasumsikan maksimum hamantaschen ...