(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))))