Files
natalieee.net/srv/content/arpa_n_gon.hy

58 lines
1.2 KiB
Hy

(import yaml [safe-load])
(setv ones-names [
"hena"
"di"
"tri"
"tetra"
"penta"
"hexa"
"hepta"
"octa"
"ennea"])
(setv tens-names [
"decagon"
"icosi"
"triconta"
"tetraconta"
"pentaconta"
"hexaconta"
"heptaconta"
"octaconta"
"enneaconta"])
(defn n-gon-name [n]
(when (> 10 n)
(return (+ (get ones-names (- n 1)) "gon")))
(when (= n 11)
(return "undecagon"))
(when (= n 12)
(return "dodecagon"))
(when (> 20 n)
(return (+ (get ones-names (- n 1)) "decagon")))
(when (= 20 n)
(return "icosagon"))
(let [[modc r] (divmod n 10)]
(+ (get tens-names (- modc 1)) "kai" (get ones-names (- r 1)) "gon")))
(defn get-members []
(with [f (open "www/src/data/arpa-n-gon.yaml" "r")]
(return (get (safe-load f) "members"))))
(defn get-member-by-domain [members domain]
(for [[idx member] (enumerate members)]
(when (= (get member "arpa-domain") domain)
(return #(idx member)))))
(defn next-member [members domain]
(get members (% (+ (get (get-member-by-domain members domain) 0) 1) (len members))))
(defn prev-member [members domain]
(get members (% (- (get (get-member-by-domain members domain) 0) 1) (len members))))