The program simplifies div expressions. The input is given in format <numerator> <denominator>, for example, 4/2, is given as 4 2.
1 (defn gcd [a b]
2 (if (= a b)
3 a
4 (if (> a b)
5 (recur (- a b) b)
6 (recur a (- b a)))))
7
8 (defn run []
9 (let [line (read-line)
10 args (.split line " ")
11 len (alength args)]
12 (if (< len 2)
13 (println "Expected two arguments.")
14 (try (let [a (Integer/parseInt (aget args 0))
15 b (Integer/parseInt (aget args 1))
16 gcd (gcd a b)]
17 (println a "/" b "=" (/ a gcd) "/" (/ b gcd)))
18 (catch NumberFormatException
19 ex
20 (println "Expected natural numbers."))))))
21 (run)
No comments:
Post a Comment