05AB1E , 8 7 5 byte
Đã lưu 2 byte nhờ @Adnan
0š¥þO
Hãy thử trực tuyến!
Làm sao?
Đây là sử dụng thuật toán lần đầu tiên được tìm thấy bởi @tsh . Nếu bạn thích câu trả lời này, hãy đảm bảo nâng cao câu trả lời của họ !
Mỗi lần một tòa nhà chọc trời thấp hơn hoặc cao như trước, nó có thể được vẽ 'miễn phí' bằng cách mở rộng các nét vẽ.
Chẳng hạn, vẽ các tòa nhà chọc trời và trong hình dưới đây không tốn kém gì.BC
Mặt khác, chúng ta cần 2 nét vẽ mới để vẽ tòa nhà chọc trời , bất kể chúng có được sử dụng lại sau đó hay không.E
Đối với tòa nhà chọc trời đầu tiên, chúng ta luôn cần nhiều nét vẽ như có các tầng trong đó.
Biến điều này thành toán học:
S=h0+∑i=1nmax(hi−hi−1,0)
Nếu chúng tôi thêm vào danh sách, điều này có thể được đơn giản hóa thành:0
S=∑i=1nmax(hi−hi−1,0)
Đã bình luận
0š¥þO # expects a list of non-negative integers e.g. [10, 9, 8, 9]
0š # prepend 0 to the list --> [0, 10, 9, 8, 9]
¥ # compute deltas --> [10, -1, -1, 1]
þ # keep only values made of decimal digits
# (i.e. without a minus sign) --> ["10", "1"]
O # sum --> 11