from random import randint, random def test_random(): random() randint(1, 10) pass # ÚLOHA 1 # Napište funkci factorization(n), která vypíše rozklad čísla n na prvočísla (jen jako součin) def factorization(n): pass # vzorový výstup: # >>> factorization(2) # 2 # >>> factorization(7) # 7 # >>> factorization(25) # 5 5 # >>> factorization(42) # 2 3 7 # >>> factorization(360) # 2 2 2 3 3 5 # >>> factorization(1024) # 2 2 2 2 2 2 2 2 2 2 # ÚLOHA 2 # A) Napište funkci gcd(a, b), která vrátí největší společný dělitel čísel a a b. # Funkce může pracovat naivně, tj. zkoušet všechny možnosti a podobně. # B) Implementujte funkci gcd(a,b) Euklidovým algoritmem - viz wiki. def gcd(a, b): pass # vzorový výstup: # >>> gcd(5, 7) # 1 # >>> gcd(8, 8) # 8 # >>> gcd(10, 5) # 5 # >>> gcd(5, 10) # 5 # >>> gcd(42, 36) # 6 # >>> gcd(0, 7) # 7 ### NÁHODNOST # ÚLOHA 3 # Napište funkci, která bude vracet nově vygenerované náhodné číslo # simulující šestistěnnou kostku s čísly 1–6. def dice(): pass # ÚLOHA 4 # Napište funkci, která bude provádět házení obyčejnou šestistěnnou kostkou # tak dlouho dokud nepadne liché číslo. Funkce vytiskne záznam v3ech hodů. def until_even(): pass # možný výstup: # >>> until_even() # 4 2 2 1 # >>> until_even() # 3 # >>> until_even() # 6 # ÚLOHA 5 # Napište funkci, která vygeneruje a vypíše count náhodných čísel v intervalu [lower, upper] # a následně vypíše nejmenší, největší číslo. Vypište také aritmetický průměr ze všech vygenerovnaých čísel. def statistics(count, lower, upper): pass # možný výstup: # >>> statistics(10, 1, 100) # nejmenší číso: 3 # největší číslo: 87 # průměr: 47.4 # ÚLOHA 6 # Opilec je na půli cesty mezi domovem a hospodou, každý krok udělá náhodně jedním směrem. # Napište funkci, která bude simulovat opilcův pohyb. Jejími parametry budou vzdálenost mezi # domovem a hospodou a počet kroků do opilcova usnutí (tj. maximální délka simulace). Simulace # skončí buď tehdy, když opilec dojede domů nebo do hospody, případně po vyčerpání počtu kroků. # Dekomponujte funkci na menší funkce. def drunkard_simulator(number): return # možný výstup: # >>> drunkman_simulator(10, 100) # home . . . . * . . . . . pub # home . . . . . * . . . . pub # home . . . . . . * . . . pub # home . . . . . * . . . . pub # home . . . . . . * . . . pub # home . . . . . . . * . . pub # home . . . . . . . . * . pub # home . . . . . . . . . * pub # home . . . . . . . . * . pub # home . . . . . . . . . * pub # home . . . . . . . . . . pub # Ended in the pub again! # ÚLOHA 7 # Chcete vědět, jak dlouho budete čekat na zastávce šaliny. Šalina jezdí každých n minut. # Nasimulujte count náhodných příchodů na zastávku (v náhodné časy). Vytiskněte, v kolika # procentech případů budete čekat déle než w minut. def tram_waiting(w, n, count): pass # možný výstup: # >>> tram_waiting(4, 5, 100) # In 19% of cases man waits longer than 4 minutes. if __name__ == "__main__": # zde můžete volat implementované funkce a zkusit si, jak fungují factorization(1024) test_random()