frane
In questa sfida, il tuo compito è prevedere l'entità del danno causato da una grande frana. Per questo utilizziamo il seguente modello bidimensionale semplificato, parametrizzato da un'altezza iniziale h >= 0 e un coefficiente critico c > 0 . Inizi con una scogliera di altezza he si presume che il terreno sia completamente piatto all'infinito a sinistra e a destra di esso. Per h = 6, la situazione si presenta così:
##########
##########
##########
##########
##########
##########
-----------------------
La -sono inamovibile roccia, e #sono terreno instabile. Se la differenza di altezza tra due colonne vicine è maggiore di c, si verifica una frana : le cunità superiori di terreno dalla colonna di sinistra cadono verso le ccolonne successive a destra, una per ciascuna. La colonna non vuota più a destra nella figura è instabile c = 2, quindi viene attivata una frana:
#########
#########
##########
##########
##########
############
-----------------------
La colonna è ancora instabile, il che provoca una seconda frana:
#########
#########
#########
#########
############
############
-----------------------
Ora, la colonna alla sua sinistra è diventata instabile, quindi una nuova frana viene innescata lì:
########
########
#########
###########
############
############
-----------------------
Dopo questo, la scogliera è di nuovo stabile. La cosa bella di questo modello è che l'ordine in cui vengono elaborate le frane non ha importanza: il risultato finale è lo stesso.
L'obiettivo
Al programma vengono forniti i parametri interi he ccome input (l'ordine non ha importanza, ma è necessario specificarlo nella risposta) e dovrebbe generare il numero totale di colonne interessate dalla frana. Ciò significa che il numero di colonne nella scogliera stabile risultante la cui altezza è strettamente tra 0e h. Nell'esempio sopra, l'output corretto è 4.
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
Questi sono indicati nel formato h c -> output.
0 2 -> 0
2 3 -> 0
6 2 -> 4
6 6 -> 0
10 1 -> 10
15 1 -> 14
15 2 -> 11
15 3 -> 6
40 5 -> 16
80 5 -> 28
80 10 -> 17