def count(t): """ Saat syötteenä listan, jossa on jokin lukujen 1…n permutaatio. Tehtäväsi on laskea listan vuorottelevien osajonojen lukumäärä. Tässä vuorotteleva tarkoittaa sitä, että osajonossa seuraava luku on aina vuorotellen pienempi tai suurempi kuin edellinen. Toisin ilmaistuna vuorotteleva osajono on sellainen, joka ei sisällä ainuttakaan vähintään kolmen pituista kasvavaa eikä vähenevää osajonoa. Tavoitteena on, että algoritmin aikavaativuus on O(n). Toteuta tiedostoon alternation.py funktio count, joka palauttaa vuorottelevien osajonojen lukumäärän. """ result = 0 result += len(t) * 2 - 1 dict = {} last_group = [] next_itr = "" print() print(t) for i, x in enumerate(t): print(f"len of dict = {len(dict)} - iteration: {i}") if len(dict) == 0: dict[x] = "" elif len(dict) == 1: # print(f"{list(dict.keys())[0]} < {x} = lower {list(dict.keys())[0] < x}") # print(f"{list(dict.keys())[0]} > {x} = higher {list(dict.keys())[0] > x}") if list(dict.keys())[0] < x: dict[t[i - 1]] = "lower" dict[x] = "higher" elif list(dict.keys())[0] > x: dict[t[i - 1]] = "higher" dict[x] = "lower" else: print("???") elif len(dict) >= 2: print("***") print(dict) return result if __name__ == "__main__": print(count([1, 2, 3, 4])) # 7 -7 = 0 print(count([1, 4, 2, 5, 3])) # 15 -9 = 6 print(count([7, 2, 1, 3, 5, 4, 6])) # 17 -13 = 4