Sebuah tali musik adalah string yang dapat dimainkan pada keyboard piano.
Bagi kita yang tidak dipaksa untuk belajar piano sebagai anak-anak, inilah keyboardnya.
Jadi senar feed a dead cabbage
adalah senar musik karena setiap huruf sesuai dengan salah satu dari ini.
Tantangan Anda adalah menulis program yang mengambil string sebagai masukan dari STDIN, dan menemukan substring musik terlama. Maka program Anda harus mencetak substring, dan panjangnya. Berikut adalah beberapa contoh input / output.
Input: "PAKAN SAYA! Aku lapar!"
Keluaran: pakan 4
Input: Tidak, tidak, tidak, musistrin!
Ouput: 0
Memasukkan:
"A **bad** !!!fAd82342"
Keluaran: abadfad 7
Input: "Golf yang bagus!"
Output: dg 2
Aturan
Output Anda mungkin huruf besar atau kecil, tetapi tidak boleh ada tanda baca atau spasi.
Akan ada huruf besar dan tanda baca dalam string input, tetapi ini tidak mempengaruhi apakah substring dianggap "musikal" atau tidak.
Harus ada ruang antara substring musikal, dan angka.
Jawaban:
Pyth,
2523 byte2 byte disimpan berkat @Jakube.
Demonstrasi. Uji harness.
Penjelasan:
rz0
: Input, dalam huruf kecil.@Grz0
: Strip setiap karakter non-alfabet..:@Grz0)
: Hasilkan semua substring.+k.:@Grz0)
: Tambahkan string kosong.f ... +k.:@Grz0)
: Filter lebih dari string ini.-T<G7
: Saring setiap string untuk karakter non musik.!-T<G7
: Negasikan hasilnya. Ini adalahTrue
jika dan hanya jika senarnya adalah musikal.f!-T<G7+k.:@Grz0)
: Saring string musik.ef!-T<G7+k.:@Grz0)
: Ambil string yang terakhir..:
memesan substring berdasarkan ukuran, jadi ini juga substring musik terlama.Jef!-T<G7+k.:@Grz0)
: Tetapkan hasilnya keJ
.pdJ
: CetakJ
, dengand
, spasi, sebagai karakter akhir.lJ
: Lalu, cetak panjangnyaJ
.sumber
Ruby,
8375 karakterCukup jelas.
Mengambil keuntungan dari kenyataan bahwa Ruby dapat membagi string pada regex (
.split(/[^a-g]/)
).sumber
Perl, 58
Menggunakan:
atau
sumber
Jawa, 268
Diperluas:
sumber
Perl 5 (106)
sumber
R,
9894 bytePenjelasan + tidak dikumpulkan:
Saran dipersilahkan!
Catatan: Outputnya sekarang adalah case campuran, yang diizinkan per edit OP. Ini menyimpan 4 byte.
sumber
golflua ,
848584 byteSaya pertama-tama
memaksa huruf kecil, kemudianmenghapusspasikarakter non-huruf, kemudian menghapus semua huruf non-musik pada input (stdin). Saya kemudian memindai setiap kata yang tersisa dan membandingkan panjangnya sebelum menghasilkan yang terbesar dan panjang (stdout). Mungkin ada cara yang lebih pendek untuk melakukan loop, tetapi saat ini adalah apa yang saya dapatkan.Kode Lua yang ungolfed akan menjadi
sumber