add code for arpa web n-gon
This commit is contained in:
57
srv/content/arpa_n_gon.hy
Normal file
57
srv/content/arpa_n_gon.hy
Normal file
@ -0,0 +1,57 @@
|
||||
(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))))
|
Reference in New Issue
Block a user