Last active
April 24, 2019 08:10
-
-
Save erdos/c03c6d2f168bf074db61527d3c6b35ed to your computer and use it in GitHub Desktop.
egesz szamok magyar nyelvu szoveges kiirasa
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns hungarian | |
(:require [clojure.string])) | |
(defn- fmt [num] | |
(cond | |
(>= num 1000_000_000) | |
(let [szorzo (quot num 1000_000_000) | |
maradek (rem num 1000_000_000)] | |
(str (fmt szorzo) "milliárd" (when (pos? maradek) (str "-" (fmt maradek))))) | |
(>= num 1000_000) | |
(let [szorzo (quot num 1000_000) | |
maradek (rem num 1000_000)] | |
(str (fmt szorzo) "millió" (when (pos? maradek) (str "-" (fmt maradek))))) | |
(>= num 2000) | |
(let [szorzo (quot num 1000) | |
maradek (rem num 1000)] | |
(str (when (not= 1 szorzo) (fmt szorzo)) | |
"ezer" (when (pos? maradek) (str "-" (fmt maradek))))) | |
(>= num 1000) | |
(let [maradek (rem num 1000)] | |
(str "ezer" (when (pos? maradek) (fmt maradek)))) | |
(>= num 100) | |
(let [szorzo (quot num 100) | |
maradek (rem num 100)] | |
(str (when (not= 1 szorzo) (fmt szorzo)) | |
"száz" (when (pos? maradek) (fmt maradek)))) | |
(>= num 10) | |
(let [szorzo (quot num 10) | |
maradek (rem num 10)] | |
(if (pos? maradek) | |
(str (case (int szorzo) | |
1 "tizen" | |
2 "huszon" | |
3 "harminc" | |
4 "negyven" | |
5 "ötven" | |
6 "hatvan" | |
7 "hetven" | |
8 "nyolcvan" | |
9 "kilencven") (fmt maradek)) | |
(case (int szorzo) | |
1 "tíz" | |
2 "húsz" | |
3 "harminc" | |
4 "negyven" | |
5 "ötven" | |
6 "hatvan" | |
7 "hetven" | |
8 "nyolcvan" | |
9 "kilencven"))) | |
:otherwise | |
(case (int num) | |
0 "nulla" | |
1 "egy" | |
2 "kettő" | |
3 "három" | |
4 "négy" | |
5 "öt" | |
6 "hat" | |
7 "hét" | |
8 "nyolc" | |
9 "kilenc"))) | |
(defn hungarian-number | |
"Kap egy egesz szamot es szepen betukkel kiirja. | |
Peldaul, amikor szamlat generalunk akkor ki kell irni az osszeget betukkel is." | |
[number] | |
(assert (integer? number)) | |
(cond | |
(neg? number) (str "mínusz " (hungarian-number (- number))) | |
(< number 2000) | |
(clojure.string/replace (fmt (long number)) #" " "") | |
:otherwise | |
(fmt (long number)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment