Berdasarkan Chunky vs. Smooth Strings .
Coretan /\_/\/\__/\/\/\/\_/\_/\
menyenangkan untuk dibuat di keyboard saat Anda benar-benar bosan. Tapi tidak semua coretan diciptakan sama. Beberapa coretan halus, seperti \___/
, dan beberapa chunky, seperti /\/\/\/\
. Yang lain benar-benar rusak, seperti////_\\\
Di dalam setiap coretan N
karakter, ada N-1
persimpangan coretan. Setiap persimpangan berlekuk diklasifikasikan menjadi salah satu dari tiga jenis:
Halus (sudut> "90 derajat"):
\_ __ _/
Chunky (sudut = "90 derajat")
/\ \/
Rusak (apa pun yang tidak terhubung)
// \\ /_ _\
Mari kita mendefinisikan kelancaran menjadi proporsi persimpangan yang mulus, dengan chunkiness dan kehancuran didefinisikan dengan cara yang sama. Setiap nilai berkisar antara 0
dan 1
. Jumlah kehalusan, kekasaran, dan kehancuran dari coretan selalu sama dengan 1.
Misalnya, coretan /\/\\_//\_
memiliki 3 persimpangan halus, 4 persimpangan tebal, dan 2 persimpangan rusak. Dengan demikian 0.3333
halus, 0.4444
tebal, dan 0.2222
pecah.
String kosong dan string dengan hanya satu karakter memiliki nilai yang tidak ditentukan, semua input akan memiliki minimal 2 karakter.
Tantangan
Tulislah sebuah program yang melibatkan pertengkaran yang panjangnya sewenang-wenang dan hasilkan dua nilai kelancaran, kekenyalan, dan kehancurannya.
- Anda dapat menulis program atau fungsi, dengan input melalui STDIN, baris perintah, atau sebagai argumen string.
- Anda dapat mengasumsikan input paling tidak panjang> = 2 dan hanya terdiri dari karakter
/\_
dengan baris tambahan opsional. - Cetak (atau kembali jika suatu fungsi) keduanya mengapung dengan ketepatan minimal 4 desimal, bulat atau terpotong. Jika nilai sebenarnya adalah
2/3
, nilai yang dapat diterima mencakup nilai apa pun antara0.6666
dan0.6667
, bahkan hal-hal seperti0.666637104
. Jika nilai pastinya adalah1/3
, jawaban apa pun yang berisi0.3333
valid. Anda dapat meninggalkan nol di belakang, atau nol di depan jika nilainya kurang dari satu. - Keluarkan pasangan dari ketiga nilai yang Anda inginkan, pastikan untuk menyatakan yang mana dua dan dalam urutan apa.
Kode terpendek dalam byte menang.
Contohnya
/\/\\/\//\\
→ Kelancaran 0
, Kekurangan 0.7
, Kerusakan0.3
_/\\_/\\/__/\\\//_
→ Kelancaran 0.29411764705
, Kekurangan 0.29411764705
, Kerusakan0.41176470588
//\\__/_\/
→ Kelancaran 0.3333333
, Kekurangan 0.2222222
, Kerusakan0.4444444
Pertanyaan bonus: Mana yang Anda sukai, coretan halus atau tebal atau patah?