diff options
117 files changed, 4827 insertions, 3064 deletions
diff --git a/challenge-002/abigail/README.md b/challenge-002/abigail/README.md index bb5cb18c8f..83ac952703 100644 --- a/challenge-002/abigail/README.md +++ b/challenge-002/abigail/README.md @@ -16,11 +16,17 @@ We cannot have a number with just 0's, as that would not be a positive number. * [bc](bc/ch-1.bc) * [Befunge-93](befunge-93/ch-1.bf93) * [C](c/ch-1.c) +* [Go](go/ch-1.go) +* [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) * [Python](python/ch-1.py) +* [R](r/ch-1.r) * [Ruby](ruby/ch-1.rb) +* [Scheme](scheme/ch-1.scm) +* [Tcl](tcl/ch-1.tcl) ## [Challenge #2](https://perlweeklychallenge.org/blog/perl-weekly-challenge-002/#challenge-2) @@ -37,9 +43,16 @@ one number per line. Programs will use an option, -t (to base 35), or ### Solutions * [AWK](awk/ch-2.awk) +* [Bash](bash/ch-2.sh) * [C](c/ch-2.c) +* [Go](go/ch-1.go) +* [Java](java/ch-1.java) * [Lua](lua/ch-2.lua) * [Node](node/ch-2.js) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-2.pl) * [Python](python/ch-2.py) +* [R](r/ch-2.r) * [Ruby](ruby/ch-2.by) +* [Scheme](scheme/ch-2.scm) +* [Tcl](tcl/ch-2.tcl) diff --git a/challenge-002/abigail/awk/ch-1.awk b/challenge-002/abigail/awk/ch-1.awk index 6f2ef2064c..b40b9b0616 100644 --- a/challenge-002/abigail/awk/ch-1.awk +++ b/challenge-002/abigail/awk/ch-1.awk @@ -1 +1,11 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-002 +# + +# +# Run as: awk -f ch-1.awk < input-file +# + {print 0 + $1} diff --git a/challenge-002/abigail/awk/ch-2.awk b/challenge-002/abigail/awk/ch-2.awk index b171fcd08f..77148f99c7 100644 --- a/challenge-002/abigail/awk/ch-2.awk +++ b/challenge-002/abigail/awk/ch-2.awk @@ -1,6 +1,7 @@ #!/usr/bin/awk + # -# See ../README.md +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-002 # # diff --git a/challenge-002/abigail/bash/ch-1.sh b/challenge-002/abigail/bash/ch-1.sh index b860cc4aa6..593a174ff3 100644 --- a/challenge-002/abigail/bash/ch-1.sh +++ b/challenge-002/abigail/bash/ch-1.sh @@ -1,7 +1,7 @@ #!/bin/sh # -# See ../README.md +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-002 # # diff --git a/challenge-002/abigail/bash/ch-2.sh b/challenge-002/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..006c46a8d6 --- /dev/null +++ b/challenge-002/abigail/bash/ch-2.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-002 +# + +# +# Run as: bash ch-2.sh < input-file +# + +set -f + +printf -v ord_0 %d "'0" +printf -v ord_A %d "'A" + +while getopts "ft" opt +do case "${opt}" in + f) action=from ;; + t) action=to ;; + esac +done + +function from_base_35 () { + local in=$1 + local ord + local char + base_10=0 + + for ((i = 0; i < ${#in}; i ++)) + do ((base_10 = 35 * base_10)) + char=${in:$i:1} + printf -v ord %d "'$char" + if [[ $char =~ [0-9] ]] + then ((base_10 = base_10 + ord - ord_0)) + else ((base_10 = base_10 + ord - ord_A + 10)) + fi + done +} + +function to_base_35 () { + local in=$1 + base_35="" + + while ((in > 0)) + do ((rem = in % 35)) + ((in = in / 35)) + if ((rem > 9)) + then printf -v char "\x$(printf %x $((ord_A + rem - 10)))" + else char=$rem + fi + base_35=${char}${base_35} + done +} + |
