diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-01-24 18:24:22 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-01-24 18:24:22 +0100 |
| commit | 708e5da6859ee73390a6b309cddfba9f3e89954f (patch) | |
| tree | bab69bc9fedf904a87bbe2c34609c19c683283bb /challenge-149 | |
| parent | 79a6d39fc08f0d3227e2fcfec823b95251493e21 (diff) | |
| download | perlweeklychallenge-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.sh | 49 |
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 |
