From 1181c3a85687ca87a9dcf7e45ba0d77fd81c7c3f Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Tue, 15 Dec 2020 15:08:33 +0100
Subject: [PATCH] =?UTF-8?q?Lambda:=20P=C5=99=C3=ADklady?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 10-lambda/jmena.py   | 15 +++++++++++++++
 10-lambda/redukce.py | 28 ++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)
 create mode 100644 10-lambda/jmena.py
 create mode 100644 10-lambda/redukce.py

diff --git a/10-lambda/jmena.py b/10-lambda/jmena.py
new file mode 100644
index 0000000..4c6943e
--- /dev/null
+++ b/10-lambda/jmena.py
@@ -0,0 +1,15 @@
+# Seřadí primárně podle příjmení, sekundárně podle jména
+def serad(jmena):
+
+    def klic(jp):
+        jmeno, prijmeni = jp.split()
+        return prijmeni, jmeno
+
+    return sorted(jmena, key=klic)
+
+# Jiné řešení
+def serad2(jmena):
+    return sorted(jmena, key=lambda jp: jp.split()[::-1])
+
+jmena = ["Vodník Česílko", "Jelen Větrník", "Loupežník Rumcajz", "Kapr Kulda"]
+print(serad(jmena))
diff --git a/10-lambda/redukce.py b/10-lambda/redukce.py
new file mode 100644
index 0000000..45e2fdb
--- /dev/null
+++ b/10-lambda/redukce.py
@@ -0,0 +1,28 @@
+def red(s, f):
+    x = s[0]
+    for i in range(1, len(s)):
+        x = f(x, s[i])
+    return x
+
+def prvni_nenulovy(s):
+
+    def f(x, y):
+        if x != 0:
+            return x
+        else:
+            return y
+
+    return red(s, f)
+
+# Zde předpokládáme, že seznam neobsahuje None
+# (dalo by se to obejít tak, že bychom místo None použili jakýkoliv
+# nově vytvořený objekt, třeba prázdný seznam)
+def vsechny_stejne(s):
+
+    def g(x, y):
+        if x is None or x != y:
+            return None
+        else:
+            return x
+
+    return red(s, g) is not None
-- 
GitLab