Dalam terminologi pendakian gunung, "14er" adalah gunung apa pun dengan ketinggian 14.000 kaki atau lebih. Namun, ada perbedaan lain. Agar suatu puncak dapat dihitung sebagai 14er, puncak juga harus memiliki "keunggulan geografis" sebesar 300 kaki atau lebih. Ini berarti bahwa untuk bergerak dari satu 14er ke yang lain, Anda harus turun setidaknya 300 kaki sebelum naik lagi. Ambil contoh ini. Baris 1 dihitung sebagai 14 000 kaki, dan setiap baris dihitung sebagai 100 kaki.
/\__/\
/ \
/ \
Sekarang, kedua puncak ini memiliki ketinggian yang cukup untuk dihitung, tetapi tidak ada penurunan ketinggian yang cukup di antara mereka untuk dihitung sebagai dua puncak yang terpisah. Oleh karena itu, salah satu dari ini dianggap sebagai 14er, dan yang lainnya hanya "puncak parsial". Berikut adalah contoh di mana kedua puncak dihitung sebagai dua 14er yang terpisah:
/\ /\
/ \ / \
/ \/ \
/ \
Mungkin juga ada puncak parsial pada penurunan antara dua 14ers. Berikut adalah versi pegunungan terakhir yang sedikit dimodifikasi:
/\ /\
/ \/\ / \
/ \/ \
/ \
Pegunungan ini juga dihitung sebagai dua 14ers.
Anda harus menulis sebuah program atau fungsi yang mengambil representasi ascii-art dari pegunungan, dan mengembalikan berapa banyak 14ers yang ada dalam jangkauan. Anda dapat mengambil input dalam format apa pun yang paling nyaman bagi Anda, baik itu array karakter 2D, string dengan baris baru, atau string dengan pembatas lainnya. Anda dapat mengasumsikan bahwa semua input hanya akan berisi karakter /\_
, dan bahwa panjang setiap baris akan sama (termasuk spasi tambahan). Anda juga dapat mengasumsikan bahwa pegunungan dimulai di sudut kiri bawah dengan a /
atau a _
.
Jika bagian terakhir dari sebuah gunung tidak di garis bawah, Anda dapat mengasumsikan bahwa gunung hanya berkurang setelah itu, misalnya
/
/
/
Dihitung sebagai 14er tunggal.
Anda tidak harus menangani pegunungan yang tidak valid.
Berikut ini beberapa contoh I / O:
/\___/\_
/ \ /\
/ \ / \
_/\/ \/ \
/ \
/ \
/ \_
2
/\ /\
/\ / \ /
/\ / \ / \/
/ \ / \ /
/ \/ \/
4
/\
_/\__/ \
/ \
1
/\
/ \ /\
/ \_/ \
/ \
/ \
/ \
/ \
1
/\
/\_/\ / \_
/ \ / \ /\
/ \/ \ /
/ \_/
/
3
_
dianggap 100 kaki lebih rendah dari garis miring pada garis yang sama. Setidaknya itulah yang disarankan oleh test case terakhir Anda./ / / _ \ \ \
? Juga, saya kira bahwa titik tertinggi dalam input harus selalu dihitung sebagai puncak tetapi ini tidak ditentukan secara eksplisit; seseorang bisa mulai dari puncak yang lebih rendah dan berakhir dengan hitungan yang berbeda.Jawaban:
JavaScript (ES6), 133 byte
Penjelasan
Karena spesifikasinya tidak dinyatakan dengan jelas, ini membuat beberapa asumsi:
Iterasi karakter karakter
c
masing-masing kolom (khusus, iterate setiap kolom sampai menemukan karakter). Ketinggian saat ini disimpan dia
. Itu dijepit ke minimum0
dan maksimum3
. Arah yang diperlukan untuk bergerak untuk menghitung puncak selanjutnya disimpan did
(false
= atas,true
= bawah). Jikaa
mencapai3
dand
sedangfalse
, jumlah puncakp
bertambah dand
diatur ketrue
(bawah). Setelaha
mencapai0
,d
diatur kembali kefalse
(atas).sumber
C, 174 byte
Membutuhkan baris tambahan di input, jika tidak +4 byte.
sumber
JavaScript (ES6), 154 byte
Dimana
\n
mewakili karakter baris baru literal. Tidak Disatukan:sumber