Viikon aiemman tehtävän aiheena oli simuloida tehokkaasti askelia, jossa listan kaksi ensimmäistä alkiota siirretään listan loppuun käänteisessä järjestyksessä.
Tehtävän voi ratkaista vielä tehokkaammin toteuttamalla ratkaisu, jossa kaikkia askeleita ei simuloida erikseen.
Toteuta tiedostoon flipfast.py
funktio find_first
, jolle annetaan listan koko ja askelten määrä. Funktion tulee palauttaa listan ensimmäinen luku askelten jälkeen.
Funktion tulee antaa vastaus tehokkaasti myös hyvin suurilla parametreilla. Tehtäväpohjan viimeinen funktiokutsu testaa tällaista tilannetta.
def find_first(size, steps): # TODO if __name__ == "__main__": print(find_first(4, 3)) # 4 print(find_first(12, 5)) # 11 print(find_first(2, 1000)) # 1 print(find_first(99, 555)) # 11 print(find_first(12345, 10**6)) # 12295 print(find_first(123456789, 1337**42)) # 111766959