From 0112bbacff866f6c8004745ec3af4134653627b6 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Tue, 12 Nov 2019 22:45:48 +0100
Subject: [PATCH] =?UTF-8?q?=C5=98e=C5=A1en=C3=AD=20=C4=8Desk=C3=BDch=20?=
 =?UTF-8?q?=C4=8D=C3=ADsel?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 06-rezy/ceska-cisla.py | 73 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100755 06-rezy/ceska-cisla.py

diff --git a/06-rezy/ceska-cisla.py b/06-rezy/ceska-cisla.py
new file mode 100755
index 0000000..9c7e1ca
--- /dev/null
+++ b/06-rezy/ceska-cisla.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+
+zakladni = [
+    None, "jedna", "dva", "tři", "čtyři",
+    "pět", "šest", "sedm", "osm", "devět",
+    "deset", "jedenáct", "dvanáct", "třináct", "čtrnáct",
+    "patnáct", "šestnáct", "sedmnáct", "osmnáct", "devatenáct"
+]
+
+desitky = [
+    None, None, "dvacet", "třicet", "čtyřicet",
+    "padesát", "šedesát", "sedmdesát", "osmdesát", "devadesát"
+]
+
+def cesky(x):
+    # Zde se postupně skládají slova výsledku
+    out = []
+
+    # Vybere správný tvar slova odpovídající počtu: [1, 2-4, 5+]
+    def ohybej(x, var):
+        if x == 1:
+            i = 0
+        elif x <= 4:
+            i = 1
+        else:
+            i = 2
+        out.append(var[i])
+
+    # Zpracuje čísla v rozsahu 1 až 999
+    def stovky(y):
+        if y >= 100:
+            s, y = y // 100, y % 100
+            if s == 2:
+                # 200 má zcela speciální tvar
+                out.append("dvě")
+                out.append("stě")
+            else:
+                if s > 1:
+                    out.append(zakladni[s])
+                ohybej(s, ["sto", "sta", "set"])
+        if y >= 20:
+            d, y = y // 10, y % 10
+            out.append(desitky[d])
+        if y > 0:
+            out.append(zakladni[y])
+
+    if x == 0:
+        return "nula"
+
+    if x >= 1000000000:
+        return "moc"
+
+    # Miliony
+    if x >= 1000000:
+        m, x = x // 1000000, x % 1000000
+        if m > 1:
+            stovky(m)
+        ohybej(m, ["milion", "miliony", "milionů"])
+
+    # Tisíce
+    if x >= 1000:
+        t, x = x // 1000, x % 1000
+        if t > 1:
+            stovky(t)
+        ohybej(t, ["tisíc", "tisíce", "tisíc"])
+
+    # Zbytek
+    stovky(x)
+    return " ".join(out)
+
+# Testovací program
+while True:
+    print(cesky(int(input())))
-- 
GitLab