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