View difference between Paste ID: bPmcnfrz and VM2K6pdG
SHOW: | | - or go back to the newest paste.
1
(defn calculate []
2
  (let [form-value (comp value by-id)
3
        parse-double (comp js/parseFloat #(s/replace % #"[^\d]" ""))
4
        total-pop (parse-double (form-value "total_pop"))        
5
        mil-pop (parse-double (form-value "mil_pop"))        
6
        pes-pop (parse-double (form-value "pes_pop"))        
7
        wiz-pop (parse-double (form-value "wiz_pop"))        
8
        patriotism (form-value "patriotism")
9
        target-draft (form-value "target_draft")
10
        draft-rate (* (if patriotism 1.3 1.0) 
11
                      (draft-table (form-value "draft_rate")))          
12
        sols-needed (- (* total-pop (/ target-draft 100)) mil-pop)
13
        desired-peasants (- pes-pop sols-needed)
14
        peasant-decay (- (dec draft-rate))
15
        hours (/ (Math/log (/ desired-peasants pes-pop)) (Math/log peasant-decay))
16
        ]
17
    (set-value! (by-id "hours") (Math/ceil hours))
18
    false))
19
20
21
(defn ^:export init []
22
  (if (and js/document
23
           (.-getElementById js/document))
24
    (let [theForm (.getElementById js/document "draftForm")]
25
      (set! (.-onsubmit theForm) calculate))))