Skip to content

Instantly share code, notes, and snippets.

@erdos
Last active April 24, 2019 08:10
Show Gist options
  • Save erdos/c03c6d2f168bf074db61527d3c6b35ed to your computer and use it in GitHub Desktop.
Save erdos/c03c6d2f168bf074db61527d3c6b35ed to your computer and use it in GitHub Desktop.
egesz szamok magyar nyelvu szoveges kiirasa
(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