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?
sumber
Jawaban:
Pyth, 25 byte
Suite uji
Keluaran kelancaran, chunkiness. Pada dasarnya, ini mengambil string kode keras dan memotongnya menjadi dua. Setiap setengah diuraikan menjadi 2 substring karakter, dan hal yang sama dilakukan untuk input. Kami mengambil persimpangan, menghasilkan pasangan selatan dan tebal. Kemudian, kita ambil panjangnya, bagi dengan jumlah pasangan, dan cetak.
sumber
Japt, 42 byte
Kerusakan keluaran, chunkyness. Cobalah online!
Bagaimana itu bekerja
Versi yang tidak bersaing, 36 byte
Bekerja pada dasarnya dengan cara yang sama seperti yang lain, dengan beberapa perubahan kecil:
ä
sekarang bekerja pada string. Karakter dilewatkan ke fungsi secara berurutan(X, Y, X+Y)
.è
menghitung jumlah kemunculan argumen dalam string / array.sumber
Python 3, 149 byte
Ini menghasilkan kehalusan dan kekenyalan.
Tidak Disatukan:
sumber
Ruby, 71
Keluaran kelancaran, chunkiness.
Mengambil string halus dan tebal minimal dan mencari mereka untuk setiap string dua karakter dalam string awal.
Terima kasih kepada Kevin Lau untuk DELAPAN byte!
sumber
(0..x.size-2).count{|i|t[x[i,2]]}
menghemat 5 byte lebih darix.chars.each_cons(2).count{|i|t[i*'']}
. Dan sekarang Anda menggunakanx.size
dua kali dalam fungsi, menugaskannya ke variabel dan menggunakannya menyimpan byte tambahan.