# Pomoćni sadržaj


# %% Zadatak 1

b1 = 9
b2 = 3
b3 = 5

print(b1, b2, b3)

if b1 <= b2 and b1 <= b3:
    print("najmanji:", b1)
elif b2 <= b1 and b2 <= b3:
    print("najmanji:", b2)
else:
    print("najmanji:", b3)


# %% Zadatak 2

kolek = [40, 20, 69, 23, 5, 621, 3]
print("kolekcija:", kolek)
print("zbir deljivih s tri:", sum([x for x in kolek if x % 3 == 0]))


# %% Zadatak 3

HEX_CHAR = "0123456789ABCDEF"

s = "xert123"

print("polazni string:", s)
print("prikaz samo znakova za heksadecimalne brojeve")

for c in s:
    if c.upper() in HEX_CHAR:
        print(c)


# %% Zadatak 4

b = 4934689722

bn = []

for c in str(b):
    if int(c) % 2 == 1:
        bn.append(c)
    else:
        bn.append("0")

bmod = int("".join(bn))

print("zamena neparnih cifara nulama u broju")
print("{:<12} >> {:>12}".format(b, bmod))


# %% Zadatak 5

s1 = "aospdaospdoa401asd23490aksldl"

s2 = "".join([c * 2 for c in s1 if c.isdigit()])

print("dvostruko ređanje samo za cifre")
print(s1, ">>", s2)


# %% Zadatak 6

t1 = "ABCDEFGHI"
t2 = "abcdefghi"

t1n = []
t2n = []
for i, a, b in zip(range(len(t1)), t1, t2):
    if i % 2 == 1:
        t1n.append(b)
        t2n.append(a)
    else:
        t1n.append(a)
        t2n.append(b)

t1mod = "".join(t1n)
t2mod = "".join(t2n)

print("pre:", t1, t2)
print("sad:", t1mod, t2mod)


# %% Zadatak 7


def opis(brojevi):
    return (min(brojevi), sum(brojevi) / len(brojevi), max(brojevi))


brojevi = [14, 56, 23, 10, 43, 20, 49, 2]
rezultat = opis(brojevi)
print("brojevi:", brojevi)
print("opis:", rezultat)


# %% Zadatak 8


def predstava(broj, decim=True, binar=True, heksa=True):
    r = {}
    if decim:
        r["decim"] = str(broj)
    if binar:
        r["binar"] = bin(broj)
    if heksa:
        r["heksa"] = hex(broj)
    return r


print(predstava(135))
print(predstava(135, False, True, True))
print(predstava(135, binar=False))


# %% Zadatak 9


def geom(brojevi):
    p = 1
    for b in brojevi:
        p *= b
    return pow(p, 1 / len(brojevi))


sekv = [1, 2, 3, 4, 5]
print("sekvenca:", sekv)
print("geometrijska sredina:", geom(sekv))


# %% Zadatak 10


def razlike(brojevi):
    rez = []
    if len(brojevi) >= 2:
        for i in range(len(brojevi) - 1):
            rez.append(brojevi[i + 1] - brojevi[i])
    return rez


sekve = [1, 6, 2, 4, 7, 8, 9, 3]
print("sekvenca:", sekve)
print("uzastopne razlike:", razlike(sekve))


# %% Zadatak 11


def spoj(a, b):
    c = []
    for x in a:
        if x not in c:
            c.append(x)
    for x in b:
        if x not in c:
            c.append(x)
    return sorted(c)


k1 = [1, 78, 27, 32, 4]
k2 = [8, 83, 4, 0, 32]
print("kolekcije:", k1, k2)
print("spoj:", spoj(k1, k2))


# %% Zadatak 12


def podskup(a, b):
    for x in a:
        if x not in b:
            return False
    return True


print("kolekcije:", [1, 2, 3, 5], [1, 2, 3, 4])
print("podskup:", podskup([1, 2, 3, 5], [1, 2, 3, 4]))

print("kolekcije:", [], [1, 2, 3, 4, 5])
print("podskup:", podskup([], [1, 2, 3, 4, 5]))

print("kolekcije:", [1, 1], [1, 2, 3, 4, 5])
print("podskup:", podskup([1, 1], [1, 2, 3, 4, 5]))


# %% Zadatak 13


def biranje_str(re):
    pv = {}
    for a, b in re.items():
        if isinstance(b, str):
            pv[a] = b
    return pv


re = {1: "n", 2: True, 3: False, 4: "t", 5: "r", 6: "", 7: 15.5}
print("sve:", re)
print("biranje:", biranje_str(re))


# %% Zadatak 14


def bez_ponavljanja(re):
    pv = []
    for s in re.values():
        if s not in pv:
            pv.append(s)
    return pv


re = {1: "", 2: "B", 3: "B", 4: "A", 5: ""}
print("rečnik:", re)
print("sadržaji:", bez_ponavljanja(re))


# %% Zadatak 15


def brojanje(k):
    pv = {}
    for x in k:
        if x not in pv:
            pv[x] = 1
        else:
            pv[x] += 1
    return pv


kolekcija = ["R", "Q", "R", "G", "R", "S", "S", "Z"]
print("kolekcija:", kolekcija)
print("prebrojani elementi:", brojanje(kolekcija))


# %% Zadatak 16


def kolone_zbir(m):
    n = len(m[0])
    rez = [0 for r in range(n)]
    for red in m:
        for j in range(n):
            rez[j] += red[j]
    return rez


matrica = [[1, 2, 3, 4], [5, 3, 4, 2], [3, 4, 6, 5], [7, 5, 6, 4]]
print("matrica:", matrica)
print("zbir po kolonama", kolone_zbir(matrica))


# %% Zadatak 17

import math


def euklidsko(t1, t2):
    return math.dist(t1, t2)


ta1 = [1, 2, 3]
ta2 = [2, 4, 5]

print("koordinate:", ta1, ta2)
print("rastojanje:", euklidsko(ta1, ta2))


# %% Zadatak 18

from random import choices

IZBOR = range(100)


def matrica(m, n):
    matr = []
    for i in range(m):
        matr.append(choices(IZBOR, k=n))
    return matr


print("matrica 3 x 3:", matrica(3, 3))
print("matrica 4 x 3:", matrica(4, 3))

