05AB1E , 8 7 5 bayt
@Adnan sayesinde 2 bayt kaydedildi
0š¥þO
Çevrimiçi deneyin!
Nasıl?
Bu ilk önce @ tsh tarafından bulunan algoritmayı kullanıyor . Bu cevabı beğenirseniz, cevaplarını da arttırdığınızdan emin olun !
Bir gökdelen bir öncekinden daha düşük veya daha yüksek olduğunda, sadece fırça darbelerini uzatarak 'ücretsiz' boyanabilir.
Örneğin, aşağıdaki şekilde gökdelenler ve boyamak hiçbir maliyeti yoktur.BC
Öte yandan, gökdelen boyamak için 2 yeni fırça darbesine ihtiyacımız var, ondan sonra tekrar kullanılıp kullanılmayacakları önemli değil.E
İlk gökdelen için, her zaman içinde katlar olduğu kadar çok darbeye ihtiyaç duyarız.
Bunu matematiğe dönüştürmek:
S=h0+∑i=1nmax(hi−hi−1,0)
Listeye hazırlarsak , bu basitleştirilebilir:0
S=∑i=1nmax(hi−hi−1,0)
Yorumlananlar
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