summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-11-14 20:06:53 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-11-14 20:06:53 +0400
commit4b5bdac9bd93ac97e3f99a14d3d28a70cd33607c (patch)
tree33007911120881a1e8fad2231c251d4ca961eb8e
parent2652e156a2823a01b02e3ccdd7da106ea2778178 (diff)
downloadgcd-4b5bdac9bd93ac97e3f99a14d3d28a70cd33607c.tar.gz
Scala
-rw-r--r--gcd.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcd.scala b/gcd.scala
new file mode 100644
index 0000000..69f86a6
--- /dev/null
+++ b/gcd.scala
@@ -0,0 +1,24 @@
+/*
+ Synopsis:
+
+ # scalac gcd.scala
+ # scala gcd 11 22 33 121
+
+ // prints 11
+
+*/
+object gcd {
+ def gcd2(a: Int, b: Int): Int = b match {
+ case 0 => a
+ case _ => gcd2(b, a % b)
+ }
+
+ def main(args: Array[String]) {
+ try {
+ val numbers = args map Integer.parseInt
+ println(numbers.foldRight(0)((a, b) => gcd2(a, b)))
+ } catch {
+ case e: NumberFormatException => println("Not a number")
+ }
+ }
+}