Annettuna on lista, jossa on kokonaislukuja. Mikään luku ei esiinny listalla useammin kuin kerran.
Robotti aloittaa kohdasta ja kerää listan luvut pienimmästä suurimpaan. Tehtäväsi on laskea, montako askelta robotti liikkuu yhteensä.
Esimerkiksi kun lista on , robotti liikkuu seuraavasti:
- askelta oikealle (luku )
- askelta vasemmalle (luku )
- askel oikealle (luku )
- askelta oikealle (luku )
Tässä tapauksessa robotti liikkuu yhteensä 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