diff options
| -rw-r--r-- | challenge-149/abigail/awk/ch-1.awk | 18 | ||||
| -rw-r--r-- | challenge-149/abigail/bash/ch-1.sh | 18 | ||||
| -rw-r--r-- | challenge-149/abigail/bc/ch-1.bc | 14 | ||||
| -rw-r--r-- | challenge-149/abigail/perl/ch-1.pl | 17 |
4 files changed, 32 insertions, 35 deletions
diff --git a/challenge-149/abigail/awk/ch-1.awk b/challenge-149/abigail/awk/ch-1.awk index db6182ff4f..1faa7da576 100644 --- a/challenge-149/abigail/awk/ch-1.awk +++ b/challenge-149/abigail/awk/ch-1.awk @@ -18,20 +18,20 @@ function digit_sum (number, sum) { } function is_fib (n, t) { - while (g < n) { - t = g - g = f + g - f = t - fib [g] = 1 + while (fib_last < n) { + t = fib_last + fib_last = fib_prev + fib_last + fib_prev = t + fib [fib_last] = 1 } return n in fib } BEGIN { - f = 0 - g = 1 - fib [f] = 1 - fib [g] = 1 + fib_prev = 0 + fib_last = 1 + fib [fib_prev] = 1 + fib [fib_last] = 1 } { diff --git a/challenge-149/abigail/bash/ch-1.sh b/challenge-149/abigail/bash/ch-1.sh index bd882f735b..9e87e4f844 100644 --- a/challenge-149/abigail/bash/ch-1.sh +++ b/challenge-149/abigail/bash/ch-1.sh @@ -17,19 +17,19 @@ function digit_sum () { done } -f=0 -g=1 +fib_prev=0 +fib_last=1 declare -A fib -fib[$f]=1 -fib[$g]=1 +fib[$fib_prev]=1 +fib[$fib_last]=1 function is_fib () { local n=$1 - while (($g < $n)) - do ((t = g)) - ((g = f + g)) - ((f = t)) - fib[$g]=1 + while (($fib_last < $n)) + do ((t = fib_last)) + ((fib_last = fib_prev + fib_last)) + ((fib_prev = t)) + fib[$fib_last]=1 done is_fib=${fib[$n]:-0} } diff --git a/challenge-149/abigail/bc/ch-1.bc b/challenge-149/abigail/bc/ch-1.bc index 85f46b7a03..84e3b12665 100644 --- a/challenge-149/abigail/bc/ch-1.bc +++ b/challenge-149/abigail/bc/ch-1.bc @@ -18,19 +18,19 @@ define digit_sum (n) { return (sum) } -f = 1 -g = 1 +fib_prev = 1 +fib_last = 1 fib [0] = 0 fib [1] = 1 fib_count = 2 define is_fib (n) { auto t, min, max - while (g < n) { - t = g - g = f + g - f = t - fib [fib_count] = g + while (fib_last < n) { + t = fib_last + fib_last = fib_prev + fib_last + fib_prev = t + fib [fib_count] = fib_last fib_count = fib_count + 1 } min = 0 diff --git a/challenge-149/abigail/perl/ch-1.pl b/challenge-149/abigail/perl/ch-1.pl index 0f4127cb8a..7188924edf 100644 --- a/challenge-149/abigail/perl/ch-1.pl +++ b/challenge-149/abigail/perl/ch-1.pl @@ -51,22 +51,19 @@ sub digitsum ($number) { # Then it's a simple lookup. # sub is_fib ($n) { - state $fib = {0 => 1, 1 => 1}; - state $f = 0; - state $g = 1; - while ($g < $n) { - ($f, $g) = ($g, $f + $g); - $$fib {$g} = 1; + state $fib = {0 => 1, 1 => 1}; + state $fib_prev = 0; + state $fib_last = 1; + while ($fib_last < $n) { + ($fib_prev, $fib_last) = ($fib_last, $fib_prev + $fib_last); + $$fib {$fib_last} = 1; } $$fib {$n} } while (<>) { for (my ($k, $N) = (0, 0 + $_); $N > 0; $k ++) { - if (is_fib (digitsum $k)) { - print "$k "; - $N --; - } + $N --, print "$k " if is_fib digitsum $k } print "\n"; } |
