diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-26 21:40:08 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-01-26 21:40:08 +0000 |
| commit | 536dafb989fad8da4c2df0df1bfc22eb2fac3706 (patch) | |
| tree | c2b39c685cca7cc2ed3b4ab4e91e75f5b9a71fdd /challenge-002/abigail/ruby | |
| parent | e36daeee6e93355383ad3a1c3fc43271f9a357d7 (diff) | |
| parent | c34bb5d7bd7fce08e8311a0f527ce7fbd69e4dae (diff) | |
| download | perlweeklychallenge-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.rb | 13 | ||||
| -rw-r--r-- | challenge-002/abigail/ruby/ch-2.rb | 50 |
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 |
