diff options
| author | Abigail <abigail@abigail.freedom.nl> | 2022-01-10 20:06:43 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.freedom.nl> | 2022-01-10 20:06:43 +0100 |
| commit | 354215f8375796503461e4cb1d6cde02a566c4cf (patch) | |
| tree | cca413bc9c826ab92dca9b56df30d72626a4e91d | |
| parent | 3617a4290d0ceff2af483943e103d3ec71ae2874 (diff) | |
| download | perlweeklychallenge-club-354215f8375796503461e4cb1d6cde02a566c4cf.tar.gz perlweeklychallenge-club-354215f8375796503461e4cb1d6cde02a566c4cf.tar.bz2 perlweeklychallenge-club-354215f8375796503461e4cb1d6cde02a566c4cf.zip | |
Week 147: bash solutions
| -rw-r--r-- | challenge-147/abigail/bash/ch-1.sh | 55 | ||||
| -rw-r--r-- | challenge-147/abigail/bash/ch-2.sh | 30 |
2 files changed, 85 insertions, 0 deletions
diff --git a/challenge-147/abigail/bash/ch-1.sh b/challenge-147/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..1f5f09be50 --- /dev/null +++ b/challenge-147/abigail/bash/ch-1.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +# + +# +# Run as: bash ch-1.sh +# + +set -f + +function is_prime () { + local n=$1 + local i + is_prime=1 + if ((n > 2 && n % 2 == 0)) + then is_prime=0 + else for ((i = 3; i * i <= n && is_prime == 1; i += 2)) + do if ((n % i == 0)) + then is_prime=0 + fi + done + fi +} + +todo=(2 3 5 7) +count=20 + +for p in "${todo[@]}" +do printf "$p " + ((count --)) +done + + +while ((count > 0)) +do next=() + for ((d = 1; d <= 9 && count > 0; d ++)) + do for p in "${todo[@]}" + do candidate=$d$p + is_prime $candidate + if (($is_prime == 1)) + then printf $candidate" " + ((count --)) + next+=($candidate) + if ((count <= 0)) + then break + fi + fi + done + done + todo=("${next[@]}") +done + +echo diff --git a/challenge-147/abigail/bash/ch-2.sh b/challenge-147/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..f38223377d --- /dev/null +++ b/challenge-147/abigail/bash/ch-2.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +# + +# +# Run as: bash ch-2.sh +# + +set -f + +declare -A pentagon + +# ((n = 0)) +# ((p = 0)) + +while true +do ((p = p + n + n + n + 1)) + ((n ++)) + pentagon[$p]=1 + + for seen in "${!pentagon[@]}" + do if ((seen + seen < p)) && [ -v pentagon[$((p - seen))] -a \ + -v pentagon[$((p - seen - seen))] ] + then echo $seen" "$((p - seen)) + break 2 + fi + done +done |
