aboutsummaryrefslogtreecommitdiff
path: root/challenge-149
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-01-24 18:24:22 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-01-24 18:24:22 +0100
commit708e5da6859ee73390a6b309cddfba9f3e89954f (patch)
treebab69bc9fedf904a87bbe2c34609c19c683283bb /challenge-149
parent79a6d39fc08f0d3227e2fcfec823b95251493e21 (diff)
downloadperlweeklychallenge-club-708e5da6859ee73390a6b309cddfba9f3e89954f.tar.gz
perlweeklychallenge-club-708e5da6859ee73390a6b309cddfba9f3e89954f.tar.bz2
perlweeklychallenge-club-708e5da6859ee73390a6b309cddfba9f3e89954f.zip
Week 149, part 1: bash solution
Diffstat (limited to 'challenge-149')
-rw-r--r--challenge-149/abigail/bash/ch-1.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-149/abigail/bash/ch-1.sh b/challenge-149/abigail/bash/ch-1.sh
new file mode 100644
index 0000000000..bd882f735b
--- /dev/null
+++ b/challenge-149/abigail/bash/ch-1.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149
+#
+
+#
+# Run as: bash ch-1.sh < input-file
+#
+
+function digit_sum () {
+ digit_sum=0
+ num=$1
+ while ((num > 0))
+ do ((digit_sum += num % 10))
+ ((num /= 10))
+ done
+}
+
+f=0
+g=1
+declare -A fib
+fib[$f]=1
+fib[$g]=1
+
+function is_fib () {
+ local n=$1
+ while (($g < $n))
+ do ((t = g))
+ ((g = f + g))
+ ((f = t))
+ fib[$g]=1
+ done
+ is_fib=${fib[$n]:-0}
+}
+
+set -f
+
+while read N
+do for ((k = 0; N > 0; k ++))
+ do digit_sum $k
+ is_fib $digit_sum
+ if (($is_fib == 1))
+ then printf "%d " $k
+ ((N --))
+ fi
+ done
+ echo ""
+done