diff --git a/05-funkce/fibonacci.py b/05-funkce/fibonacci.py
new file mode 100755
index 0000000000000000000000000000000000000000..a3da97eb49f4a3d4fa7e2b2a77c393b19e53f99c
--- /dev/null
+++ b/05-funkce/fibonacci.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python3
+
+def fibonacci(n):
+    if n <= 1:
+        return n
+    a, b = 0, 1
+    for i in range(2, n+1):
+        a, b = b, a+b
+    return b
diff --git a/05-funkce/kvadrov.py b/05-funkce/kvadrov.py
new file mode 100755
index 0000000000000000000000000000000000000000..33e2d7d702dc3039a5ffb7b1f0f34855a7f9d482
--- /dev/null
+++ b/05-funkce/kvadrov.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+from math import sqrt
+
+# Vrátí seznam kořenů rovnice ax**2 + bc + c = 0
+def kvadraticka_rovnice(a, b, c):
+    if a == 0:
+        print("Lineární rovnice neřešíme")
+        return []
+    d = b**2 - 4*a*c    # Diskriminant
+    if d < 0:
+        return []
+    elif d == 0:
+        return [-b/(2*a)]
+    else:
+        q = sqrt(d)
+        return [(-b - q) / (2*a), (-b + q) / (2*a)]
+
+# Příklady:
+print(kvadraticka_rovnice(4, 0, -64))   # 2 kořeny
+print(kvadraticka_rovnice(4, 0, 64))    # žádný kořen
+print(kvadraticka_rovnice(1, -2, 1))    # 1 kořen
diff --git a/05-funkce/min3.py b/05-funkce/min3.py
new file mode 100755
index 0000000000000000000000000000000000000000..0de8f4e7965f18468f3d08b57e1ef3237d16a6c5
--- /dev/null
+++ b/05-funkce/min3.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+
+def min2(x, y):
+    if x < y:
+        return x
+    else:
+        return y
+
+def min3(x, y, z):
+    return min2(min2(x, y), z)
diff --git a/05-funkce/prunik.py b/05-funkce/prunik.py
new file mode 100755
index 0000000000000000000000000000000000000000..12bf17b1bd3637f2e7c94d75362b173be1734370
--- /dev/null
+++ b/05-funkce/prunik.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+
+# Spočítá průnik dvou setříděných seznamů
+def prunik_seznamu(a, b):
+    vystup = []
+    j = 0
+    for x in a:
+        while j < len(b) and b[j] < x:
+            j += 1
+        if j < len(b) and b[j] == x:
+            vystup.append(x)
+            j += 1
+    return vystup
diff --git a/05-funkce/suda.py b/05-funkce/suda.py
new file mode 100755
index 0000000000000000000000000000000000000000..3556733b68589c616e852dadb382e30860700fb5
--- /dev/null
+++ b/05-funkce/suda.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+def kolik_sudych(seznam):
+    c = 0
+    for x in seznam:
+        if x % 2 == 0:
+            c += 1
+    return c
+
+def vyber_suda(seznam):
+    vystup = []
+    for x in seznam:
+        if x % 2 == 0:
+            vystup.append(x)
+    return vystup