##### IB111 skupina 10 #####
##### cvičení 04

### DEBUGGING
# UKOL 1
# opravte následující kód pomoci debuggeru v PyCharmu. Funkce by m2la vytisknout do konzole dvojkový zápis čísla 'x'
def convert_10_to_2(x):
    power = 1
    while power * 2 < x:
        power *= 2

    while power > 0:
        if x > power:
            print(1, end='')
            x -= power
        else:
            print(0, end='')
        power /= 2
    print()


convert_10_to_2(0)    # 10
convert_10_to_2(2)    # 10
convert_10_to_2(8)    # 1000
convert_10_to_2(10)   # 1010
convert_10_to_2(31)  # 11111
convert_10_to_2(42)  # 101010


# ÚKOL 1.5
# napište jednodušší verzi funkce convert_10_to_2.

### NÁHODNÁ ČÍSLA

# ÚKOL 2
# Napište funkci dice(sides), která simuluje hod kostkou o počtu stěn 'sides' a vrací hodnotu, která padla. Všechny
# hodnoty na kostce mají stejnou pravděpodobnost.


# ÚKOL 3
# Napište funkci throw_until_six(), která bude provádět házení obyčejnou šestistěnnou kostkou tak dlouho dokud nepadne
# šestka. Poté funkce vrátí celkový součet všech hozených hodů.


# ÚKOL 4
# Napište funkci, která spočítá průměrný součet hodů, pokud házíme koskou tak dlouho, dokud nepadne šestka.


### APROXIMACE

# ÚKOL 5
# Pomocí sunkce solver(precision) najděte reálný kořen rovnice 'x^3 + x - 1 = 0' metodou půlení intervalů s chybou menší než
# parametr precision. Můžete předpokládat, že kořen se nachází mezi čísly 0 a 1.


### SIMULACE
# ÚKOL 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
# drunkard_simulator(distance, steps) která bude simulovat opilcův pohyb. Jejími parametry budou vzdálenost mezi
# domovem a hospodou 'distance' a počet kroků do opilcova usnutí 'steps' (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ů.


# ÚKOL 7
# Analyzujte, jakou pravděpodobnost má opilec, že dojde domů. Napište program, který využije funkci drunkard_simulator.
# Analýzu dělejte


# ÚKOL 8
# Napište funkci, která náhodně zvolí dva body ze čtverce o velikosti size a vrátí jejich vzdálenost. Následně napište
# funkci, která tento výběr bude opakovat count krát a vypíše průměrnou vzdálenost.





