Brain-flak berusia satu tahun besok! Untuk menghormati hari ulang tahunnya, kami mengadakan pesta ulang tahun gaya PPCG, di mana beberapa pengguna mengirim pertanyaan yang berhubungan dengan otak! Bantu kami merayakan! :)
Brain-flak adalah bahasa esoteris yang saya tulis di mana semua perintah adalah tanda kurung dan semua tanda kurung harus sepenuhnya cocok. Untuk meminjam definisi saya sendiri :
Untuk tujuan tantangan ini, "braket" adalah salah satu karakter:
()[]{}<>
.Sepasang tanda kurung dianggap "cocok" jika tanda kurung buka dan tutup berada dalam urutan yang benar dan tidak memiliki karakter di dalamnya, seperti
() []{}
Atau jika setiap subelemen di dalamnya juga cocok.
[()()()()] {<[]>} (()())
Subelemen juga dapat disarungkan beberapa lapisan.
[(){<><>[()]}<>()] <[{((()))}]>
Sebuah string dianggap "Sepenuhnya cocok" jika dan hanya jika:
Setiap karakter adalah braket,
Setiap pasangan braket memiliki braket pembuka dan penutup yang benar dan dalam urutan yang benar
Dalam perayaan ulang tahun pertama brain-flak, tantangan hari ini adalah tentang mengambil satu set kurung yang tidak seimbang, dan menentukan jenis operasi apa yang diperlukan untuk menjadikannya brain-flak yang valid.
Sebagai contoh,
((
ini bukan kode brain-flak yang valid, tetapi jika kita menambahkannya))
, ia menjadi(())
, yang sepenuhnya seimbang, dan karenanya valid-brain flak. Itu membuat input ini dapat ditambahkan .Demikian pula,
>}
ini tidak valid, tetapi kita bisa{<
membuatnya{<>}
, yang valid. Itu membuat input ini dapat diandalkan .Beberapa input sedikit lebih rumit. Misalnya,
)][({
tidak dapat dibuat valid murni dengan menambahkan atau menambahkan. Tapi itu bisa dibuat valid dengan menambahkan[(
dan menambahkan})]
. Oleh karena itu, input ini bersifat prependable dan appendable .Terakhir, beberapa input tidak pernah dapat dibuat kode brain-flak yang valid dengan kombinasi penambahan atau penambahan. Misalnya,
(>
tidak pernah dapat dibuat valid. (Menciptakan<
menciptakan<(>
, dan menambahkan)
membuat(>)
, tidak ada yang valid) Oleh karena itu, input ini tidak dapat ditambahkan atau tidak dapat ditambahkan.
Untuk tantangan hari ini, Anda harus menulis sebuah program atau fungsi yang mengambil string tanda kurung dan menentukan apakah string tersebut
appendable
prependable
both
neither
Anda dapat memilih nilai apa yang Anda gunakan untuk mewakili untuk setiap kasus. Sebagai contoh, keluaran 1, 2, 3, 4
, atau 'a', 'p', 'b', 'n'
, atau 1, 'foo', 3.1415, -17
, atau apa pun baik-baik saja. Selama setiap output berbeda dan konsisten , itu bagus. Namun Anda harus secara jelas menentukan output mana yang sesuai dengan kasus mana.
Anda dapat mengembalikan nilai ini dalam format apa pun yang paling nyaman (misalnya, kembali dari suatu fungsi, mencetak ke STDOUT, mengubah argumen, menulis ke file, dll.).
Anda dapat mengasumsikan bahwa input tidak akan pernah valid atau kosong.
Contohnya
Input berikut semuanya dapat dipertanggungjawabkan :
))
(((()()())))}
)>}]
()[]{}<>)
Ini semua bisa ditambahkan :
(({}{})
((((
([]()())(
{<<{
Ini semua adalah keduanya :
))((
>()[(()){
>{
Dan ini bukan keduanya :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
Seperti biasa, ini adalah kode-golf , jadi celah standar berlaku, dan jawaban terpendek dalam byte menang!
Tantangan ini terutama sulit di otak-serpihan, sehingga brownies maksimum menunjuk ke setiap dan setiap jawaban yang ditulis dalam otak-serpihan. :)
][
ini tidak appendable, karena tidak ada Anda dapat menambahkan dapat membuatnya berlaku. Demikian pula, itu tidak dapat dipertanggungjawabkan. Ini ... 'dapat dimasukkan'! Anda dapat memasukkannya ke dalam string untuk membuat seluruh Brainflak valid.
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
Saya pikir bahwa menawarkan poin brownies dan cookie maksimum sebagai gantinya akan mendorong Brain-Flaking tantangan ini lebih dari sekedar poin brownies, karena saya tidak berpikir itu sepele sama sekali dalam bahasa apa pun , apalagi Brain-Flak. : P