aboutsummaryrefslogtreecommitdiff
path: root/challenge-002/abigail/ruby
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2021-01-26 21:40:08 +0000
committerPaulo Custodio <pauloscustodio@gmail.com>2021-01-26 21:40:08 +0000
commit536dafb989fad8da4c2df0df1bfc22eb2fac3706 (patch)
treec2b39c685cca7cc2ed3b4ab4e91e75f5b9a71fdd /challenge-002/abigail/ruby
parente36daeee6e93355383ad3a1c3fc43271f9a357d7 (diff)
parentc34bb5d7bd7fce08e8311a0f527ce7fbd69e4dae (diff)
downloadperlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.gz
perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.bz2
perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-002/abigail/ruby')
-rw-r--r--challenge-002/abigail/ruby/ch-1.rb13
-rw-r--r--challenge-002/abigail/ruby/ch-2.rb50
2 files changed, 63 insertions, 0 deletions
diff --git a/challenge-002/abigail/ruby/ch-1.rb b/challenge-002/abigail/ruby/ch-1.rb
new file mode 100644
index 0000000000..0ef00293d6
--- /dev/null
+++ b/challenge-002/abigail/ruby/ch-1.rb
@@ -0,0 +1,13 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-1.rb < input-file
+#
+
+ARGF . each_line do |_|
+ puts _ . to_i
+end
diff --git a/challenge-002/abigail/ruby/ch-2.rb b/challenge-002/abigail/ruby/ch-2.rb
new file mode 100644
index 0000000000..95efc096a7
--- /dev/null
+++ b/challenge-002/abigail/ruby/ch-2.rb
@@ -0,0 +1,50 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-2.rb {-f | -t} < input-file
+#
+
+require 'optparse'
+
+BASE = 35
+
+#
+# Parse and validate options
+#
+params = ARGV . getopts ('ft')
+do_from_base = params ["f"] ? 1 : 0
+do_to_base = params ["t"] ? 1 : 0
+if do_from_base + do_to_base != 1
+ STDERR . puts "Program requires exactly one of '-f' or '-t'"
+ exit 1
+end
+
+
+def to_base (number)
+ out = ""
+ while number > 0 do
+ rest = number % BASE
+ if rest < 10
+ then char = rest . to_s
+ else char = (65 + rest - 10) . chr
+ end
+ out = char + out
+ number = (number / BASE) . to_i
+ end
+ return out
+end
+
+def from_base (number)
+ return number . to_i (35)
+end
+
+ARGF . each_line do |_|
+ if do_from_base == 1
+ then puts from_base (_)
+ else puts to_base (_ . to_i)
+ end
+end