From b29cb298a8d08a9d47d37b3d1ee7a62cc31a43d3 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 18 Oct 2021 21:38:38 +0200 Subject: Bash solutions for week 135 --- challenge-135/abigail/README.md | 2 ++ challenge-135/abigail/bash/ch-1.sh | 27 +++++++++++++++++++++++++++ challenge-135/abigail/bash/ch-2.sh | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 challenge-135/abigail/bash/ch-1.sh create mode 100644 challenge-135/abigail/bash/ch-2.sh diff --git a/challenge-135/abigail/README.md b/challenge-135/abigail/README.md index e0e26b70dd..5d1820d670 100644 --- a/challenge-135/abigail/README.md +++ b/challenge-135/abigail/README.md @@ -3,11 +3,13 @@ ## Part 1 * [AWK](awk/ch-1.awk) +* [Bash](bash/ch-1.sh) * [C](c/ch-1.c) * [Perl](perl/ch-1.pl) ## Part 2 * [AWK](awk/ch-2.awk) +* [Bash](bash/ch-1.sh) * [C](c/ch-2.c) * [Perl](perl/ch-2.pl) diff --git a/challenge-135/abigail/bash/ch-1.sh b/challenge-135/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..d85a744a0c --- /dev/null +++ b/challenge-135/abigail/bash/ch-1.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-1.sh < input-file +# + +set -f + +while read line +do line=${line/#[-+]/} # Get rid of sign + if [[ $line =~ [^0-9] ]] + then + echo "not an integer" + elif ((${#line} % 2 == 0)) + then + echo "even number of digits" + elif ((${#line} < 3)) + then + echo "too short" + else + echo ${line:$(((${#line} - 3) / 2)):3} + fi +done diff --git a/challenge-135/abigail/bash/ch-2.sh b/challenge-135/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..0d4c43e705 --- /dev/null +++ b/challenge-135/abigail/bash/ch-2.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-2.sh < input-file +# + +set -f + +w=(1 3 1 7 3 9 1) + +while read line +do if ((${#line} != 7)) + then echo 0 + elif [[ $line =~ [^0-9BCDFGHJKLMNPQRSTVWXYZ] ]] + then echo 0 + else + ((check = 0)) + for ((i = 0; i < 7; i ++)) + do char=${line:$i:1} + printf -v ord %d "'$char" + if [[ $char =~ [0-9] ]] + then ((value = ord - 48)) + else ((value = ord - 65 + 10)) + fi + ((check += ${w[i]} * value)) + done + if ((check % 10 == 0)) + then echo 1 + else echo 0 + fi + fi +done -- cgit