Sebuah batang dan daun petak menampilkan sekelompok nilai-nilai numerik dalam kelompok, yang ditentukan oleh semua tapi angka terakhir. Sebagai contoh, misalkan kita memiliki set data ini:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
Kami dapat menghasilkan plot batang dan daun ini:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
Batang baris pertama adalah 0, jadi "daunnya" - digit setelah |
- mewakili nilai antara 0 inklusif dan 10 eksklusif. Daun pada setiap batang disortir. Batang tanpa daun (seperti 3) masih muncul di plot. Nilai 101 adalah antara 100 inklusif dan 110 eksklusif, jadi batangnya adalah 10 (100 dibagi 10).
Tantangan Anda adalah untuk memeriksa apakah sepotong teks adalah plot batang dan daun yang valid. Plot yang valid memenuhi aturan ini:
- Memiliki tepat satu baris untuk setiap batang (yaitu kelompok 10-lebar) dalam rentang data (termasuk batang di tengah rentang tanpa daun)
- Tidak memiliki batang di luar rentang
- Semua daun disortir naik ke kanan
- Semua batang diurutkan naik ke bawah
- Hanya memiliki karakter numerik (selain pemisah
|
)
Anda tidak harus berurusan dengan angka yang memiliki bagian pecahan. Anda dapat menyetujui atau menolak angka nol di depan batang, tetapi batang kosong tidak diizinkan. Setidaknya akan ada satu nilai. Anda hanya dapat mengambil ruang ekstra setelah daun di setiap baris. Anda dapat mengasumsikan baris baru yang memimpin dan / atau tertinggal. Semua karakter akan dicetak ASCII.
Fungsi atau program Anda harus mengembalikan atau menampilkan (untuk menyaring atau keluaran standar) nilai kebenaran untuk plot yang valid, atau nilai palsu untuk plot yang tidak valid. Anda dapat mengambil input dari input standar, dari file, sebagai satu string besar, sebagai array string - apa pun yang paling nyaman.
Berikut adalah beberapa kasus uji yang merupakan plot yang valid (dipisahkan oleh garis kosong):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
Berikut adalah beberapa kasus uji yang plotnya tidak valid, dengan komentar di sebelah kanan:
|0 Blank stem
5|347 Missing a stem (6) in the range
7|9
4| Has a stem (4) outside the range
5|26
6|7
11|432 Leaves aren't sorted correctly
12|9989
5|357 Stems aren't sorted correctly
4|002
6|1
4|5 Duplicate stem
4|6
4|6
5|1
51114 No stem and leaf separator
609
1|2|03 Multiple separators
2|779|
4|8abcdefg9 Invalid characters
5|1,2,3
75 | 4 6 Invalid characters (spaces)
76 | 2 8 8 9
Ini golf kode, jadi kode terpendek menang! Celah standar tidak diijinkan.
4|;5|26;6|7
yang memiliki batang pertama di luar kisaran, tetapi pada akhirnya, yaitu 12|3;13|4559;14|
.
1|2|3
di dalamnya.