aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-01-24 15:45:55 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-01-24 15:45:55 +0100
commitd2307ccb4e26f83c41e1d5c1517ae6297ba588a2 (patch)
tree0fc69255470314e13a3f83661b66833f67a01505
parent711d5679ff878c272bfd421116253630db330fc7 (diff)
downloadperlweeklychallenge-club-d2307ccb4e26f83c41e1d5c1517ae6297ba588a2.tar.gz
perlweeklychallenge-club-d2307ccb4e26f83c41e1d5c1517ae6297ba588a2.tar.bz2
perlweeklychallenge-club-d2307ccb4e26f83c41e1d5c1517ae6297ba588a2.zip
Week 148, part 1: AWK solution
-rw-r--r--challenge-149/abigail/awk/ch-1.awk41
1 files changed, 41 insertions, 0 deletions
diff --git a/challenge-149/abigail/awk/ch-1.awk b/challenge-149/abigail/awk/ch-1.awk
new file mode 100644
index 0000000000..392a9bd88a
--- /dev/null
+++ b/challenge-149/abigail/awk/ch-1.awk
@@ -0,0 +1,41 @@
+#!/usr/bin/awk
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149
+#
+
+#
+# Run as: awk -f ch-1.awk < input-file
+#
+
+function digit_sum (number, sum) {
+ sum = 0
+ while (number > 0) {
+ sum += number % 10
+ number = int (number / 10)
+ }
+ return sum
+}
+
+{
+ max_fib = 9 * (1 + length ($1))
+ f = 0
+ g = 1
+ fib [f] = 1
+ fib [g] = 1
+ while (g < max_fib) {
+ t = f + g
+ fib [t] = 1
+ f = g
+ g = t
+ }
+
+ for (c = k = 0; c < $1; k ++) {
+ if (digit_sum(k) in fib) {
+ printf ("%d ", k)
+ c ++
+ }
+ }
+
+ printf ("\n")
+}