diff options
| author | Abigail <abigail@abigail.be> | 2021-10-18 20:20:18 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-10-18 20:20:18 +0200 |
| commit | afb90dd6756afcd43a86249358fe3a41e3cf1950 (patch) | |
| tree | 96337ed7c2c0c7dd752b0510bc1cffa78f65ca02 | |
| parent | 69f1d3147c97538c8b7e385e3973b408fcf352f3 (diff) | |
| download | perlweeklychallenge-club-afb90dd6756afcd43a86249358fe3a41e3cf1950.tar.gz perlweeklychallenge-club-afb90dd6756afcd43a86249358fe3a41e3cf1950.tar.bz2 perlweeklychallenge-club-afb90dd6756afcd43a86249358fe3a41e3cf1950.zip | |
AWK solutions for week 135
| -rw-r--r-- | challenge-135/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-135/abigail/awk/ch-1.awk | 28 | ||||
| -rw-r--r-- | challenge-135/abigail/awk/ch-2.awk | 38 |
3 files changed, 68 insertions, 0 deletions
diff --git a/challenge-135/abigail/README.md b/challenge-135/abigail/README.md index 6c58ec0530..e0e26b70dd 100644 --- a/challenge-135/abigail/README.md +++ b/challenge-135/abigail/README.md @@ -2,10 +2,12 @@ ## Part 1 +* [AWK](awk/ch-1.awk) * [C](c/ch-1.c) * [Perl](perl/ch-1.pl) ## Part 2 +* [AWK](awk/ch-2.awk) * [C](c/ch-2.c) * [Perl](perl/ch-2.pl) diff --git a/challenge-135/abigail/awk/ch-1.awk b/challenge-135/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..210b27b9b0 --- /dev/null +++ b/challenge-135/abigail/awk/ch-1.awk @@ -0,0 +1,28 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk < input-file +# + + +# +# Get rid of leading sign +# +/^[-+]/ {$0 = substr ($0, 2)} + +# +# Validation +# +/[^0-9]/ {print "not an integer"; next} +/^(..)*$/ {print "even number of digits"; next} +length ($0) < 3 {print "too short"; next} + +# +# Print the middle three digits +# + + {print substr ($0, 1 + int ((length ($0) - 3) / 2), 3)} diff --git a/challenge-135/abigail/awk/ch-2.awk b/challenge-135/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..021224dfe0 --- /dev/null +++ b/challenge-135/abigail/awk/ch-2.awk @@ -0,0 +1,38 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-2.awk < input-file +# + +BEGIN { + split ("1 3 1 7 3 9 1", w, " ") + for (i = 48; i <= 57; i ++) { + c [sprintf ("%c", i)] = i - 48 + } + for (i = 65; i <= 90; i ++) { + c [sprintf ("%c", i)] = i - 65 + } +} + + +# +# Check for the right characters, and the correct length. +# +/[^0-9BCDFGHJKLMNPQRSTVWXYZ]/ {print 0; next} +length ($0) != 7 {print 0; next} + +# +# Do the check sum +# +{ + check = 0 + for (i = 1; i <= 7; i ++) { + check += w [i] * c [substr ($0, i, 1)] + } + print (check % 10 == 0 ? 1 : 0) +} + |
