aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-136/abigail/README.md2
-rw-r--r--challenge-136/abigail/ruby/ch-1.rb25
-rw-r--r--challenge-136/abigail/ruby/ch-2.rb21
3 files changed, 48 insertions, 0 deletions
diff --git a/challenge-136/abigail/README.md b/challenge-136/abigail/README.md
index b655b703ea..7c6a7bc2d5 100644
--- a/challenge-136/abigail/README.md
+++ b/challenge-136/abigail/README.md
@@ -9,6 +9,7 @@
* [Node.js](node/ch-1.js)
* [Perl](perl/ch-1.pl)
* [Python](python/ch-1.py)
+* [Ruby](ruby/ch-1.rb)
## Part 2
@@ -18,3 +19,4 @@
* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
* [Python](python/ch-2.py)
+* [Ruby](ruby/ch-2.rb)
diff --git a/challenge-136/abigail/ruby/ch-1.rb b/challenge-136/abigail/ruby/ch-1.rb
new file mode 100644
index 0000000000..72ef8542f1
--- /dev/null
+++ b/challenge-136/abigail/ruby/ch-1.rb
@@ -0,0 +1,25 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-1.rb < input-file
+#
+
+ARGF . each_line do
+ | line |
+ m, n = line . split . map {|x| x . to_i}
+ gcd = m . gcd (n)
+ valid = 0
+ if gcd > 1 then
+ while gcd % 2 == 0 do
+ gcd /= 2
+ end
+ if gcd == 1 then
+ valid = 1
+ end
+ end
+ puts (valid)
+end
diff --git a/challenge-136/abigail/ruby/ch-2.rb b/challenge-136/abigail/ruby/ch-2.rb
new file mode 100644
index 0000000000..d1bd264ff6
--- /dev/null
+++ b/challenge-136/abigail/ruby/ch-2.rb
@@ -0,0 +1,21 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-2.rb < input-file
+#
+
+def count (target, this_fib, prev_fib)
+ return target < this_fib ? 0
+ : target == this_fib ? 1
+ : count(target - this_fib, this_fib + prev_fib, this_fib) +
+ count(target, this_fib + prev_fib, this_fib)
+end
+
+ARGF . each_line do
+ | line |
+ puts (count(line . to_i, 1, 1))
+end