Berikut ini adalah rubi seni ASCII yang sederhana :
___
/\_/\
/_/ \_\
\ \_/ /
\/_\/
Sebagai penjual perhiasan untuk ASCII Gemstone Corporation, pekerjaan Anda adalah memeriksa batu rubi yang baru diperoleh dan meninggalkan catatan tentang segala cacat yang Anda temukan.
Untungnya, hanya 12 jenis cacat yang mungkin, dan pemasok Anda menjamin bahwa tidak ada ruby yang memiliki lebih dari satu cacat.
12 cacat sesuai dengan penggantian salah satu dari 12 bagian _
, /
atau \
karakter dari ruby dengan karakter spasi ( ). Garis luar rubi tidak pernah memiliki cacat.
Cacat diberi nomor sesuai dengan karakter mana yang memiliki ruang di tempatnya:
Jadi ruby dengan cacat 1 terlihat seperti ini:
___
/\_/\
/_/ _\
\ \_/ /
\/_\/
Rubi dengan cacat 11 terlihat seperti ini:
___
/\_/\
/_/ \_\
\ \_/ /
\ _\/
Itu ide yang sama untuk semua cacat lainnya.
Tantangan
Tulis program atau fungsi yang mengambil string dari satu ruby, berpotensi rusak. Nomor cacat harus dicetak atau dikembalikan. Angka cacat adalah 0 jika tidak ada cacat.
Ambil input dari file teks, stdin, atau argumen fungsi string. Kembalikan nomor yang rusak atau cetak ke stdout.
Anda dapat berasumsi bahwa ruby memiliki baris baru. Anda tidak boleh berasumsi bahwa ia memiliki spasi tambahan atau memimpin baris baru.
Kode terpendek dalam byte menang. ( Penghitung byte berguna. )
Uji Kasus
13 jenis rubi yang tepat, diikuti langsung oleh hasil yang diharapkan:
___
/\_/\
/_/ \_\
\ \_/ /
\/_\/
0
___
/\_/\
/_/ _\
\ \_/ /
\/_\/
1
___
/\ /\
/_/ \_\
\ \_/ /
\/_\/
2
___
/\_/\
/_ \_\
\ \_/ /
\/_\/
3
___
/\_/\
/_/ \_\
\ _/ /
\/_\/
4
___
/\_/\
/_/ \_\
\ \ / /
\/_\/
5
___
/\_/\
/_/ \_\
\ \_ /
\/_\/
6
___
/\_/\
/_/ \ \
\ \_/ /
\/_\/
7
___
/\_ \
/_/ \_\
\ \_/ /
\/_\/
8
___
/ _/\
/_/ \_\
\ \_/ /
\/_\/
9
___
/\_/\
/ / \_\
\ \_/ /
\/_\/
10
___
/\_/\
/_/ \_\
\ \_/ /
\ _\/
11
___
/\_/\
/_/ \_\
\ \_/ /
\/_ /
12