Annettuna on lista, jossa on kokonaislukuja. Mikään luku ei esiinny listalla useammin kuin kerran.
Robotti aloittaa kohdasta 0 ja kerää listan luvut pienimmästä suurimpaan. Tehtäväsi on laskea, montako askelta robotti liikkuu yhteensä.
Esimerkiksi kun lista on [42, 1337, 1, 10^9], robotti liikkuu seuraavasti:
- 2 askelta oikealle (luku 1)
- 2 askelta vasemmalle (luku 42)
- 1 askel oikealle (luku 1337)
- 2 askelta oikealle (luku 10^9)
Tässä tapauksessa robotti liikkuu yhteensä 2+2+1+2=7 askelta.
Toteuta tiedostoon robolist.py
funktio count_steps
, jolle annetaan lista lukuja. Funktion tulee palauttaa robotin askelmäärä.
Sinun tulee toteuttaa funktio niin, että se laskee askelmäärän tehokkaasti myös suurelle listalle. Funktion tulee antaa vastaus välittömästi myös tehtäväpohjan viimeisessä testissä.
def count_steps(numbers): # TODO if __name__ == "__main__": print(count_steps([1])) # 0 print(count_steps([1, 2, 3])) # 2 print(count_steps([3, 2, 1])) # 4 print(count_steps([42, 1337, 1, 10**9])) # 7 print(count_steps([1, 3, 5, 7, 8, 6, 4, 2])) # 28 print(count_steps([10**6, 10**8, 10**7, 10**9])) # 5 numbers = [(x * 999983) % 10**9 + 1 for x in range(10**5)] print(count_steps(numbers)) # 4871908997