diff options
| author | ntovar <tovar.nelo@gmail.com> | 2024-06-29 13:10:24 -0500 |
|---|---|---|
| committer | ntovar <tovar.nelo@gmail.com> | 2024-06-29 13:10:24 -0500 |
| commit | f3a3d84a312f7ca52e11498568a42a7b0cea16fd (patch) | |
| tree | 7c392738ad219c5267ef5ab3241079486fff6282 | |
| parent | e706d2548a3ce7ff5d3ae480224ee3ee6c5577de (diff) | |
| download | perlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.tar.gz perlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.tar.bz2 perlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.zip | |
Challenge 275. Add and Bash solutions. By Nelo Tovar
| -rwxr-xr-x | challenge-275/nelo-tovar/bash/ch-1.sh | 34 | ||||
| -rwxr-xr-x | challenge-275/nelo-tovar/bash/ch-2.sh | 43 | ||||
| -rw-r--r-- | challenge-275/nelo-tovar/perl/ch-1.pl | 36 | ||||
| -rw-r--r-- | challenge-275/nelo-tovar/perl/ch-2.pl | 41 |
4 files changed, 154 insertions, 0 deletions
diff --git a/challenge-275/nelo-tovar/bash/ch-1.sh b/challenge-275/nelo-tovar/bash/ch-1.sh new file mode 100755 index 0000000000..2232e1f3b2 --- /dev/null +++ b/challenge-275/nelo-tovar/bash/ch-1.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# +# The Weekly Challenge 275 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-275/ +# +# Task 1 : Broken Keys + +function broken_keys() { + local sentence=${1,,} + local keys=${2,,} + local count=0 + + for i in $sentence; do + if [[ ! $i =~ [$keys] ]]; then + ((count++)) + fi + done + + echo $count +} + +examples_sentences=("Perl Weekly Challenge" "Perl and Raku" "Well done Team PWC" "The joys of polyglottism") +examples_keys=('la' 'a' 'lo' 'T') + +for e in ${!examples_sentences[@]}; do + sentence=${examples_sentences[$e]} + keys=${examples_keys[$e]} + bk=$(broken_keys "$sentence" "$keys") + echo "Input : sentence = '$sentence' keys = $keys " + echo "Output : $bk" + echo "" +done + diff --git a/challenge-275/nelo-tovar/bash/ch-2.sh b/challenge-275/nelo-tovar/bash/ch-2.sh new file mode 100755 index 0000000000..e2149f2ce8 --- /dev/null +++ b/challenge-275/nelo-tovar/bash/ch-2.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# The Weekly Challenge 275 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-275/ +# +# Task 2 : Replace Digits + +ord() { + LC_CTYPE=C printf '%d' "'$1" +} + +chr() { + printf \\$(printf '%03o' $1) +} + +function replace_digits() { + local str=$1 + local length=${#str} + local last_letter=${str:0:1} + + for (( i = 1; i < $length; i++ )); do + local char=${str:$i:1} + if [[ $char =~ [0123456789] ]]; then + ((o=$(ord $last_letter) + $char)) + new_letter=$(chr $o) + str=${str/$char/$new_letter} + else + last_letter=$char + fi + done + + echo $str +} + +examples=('a1c1e1' 'a1b2c3d4' 'b2b' 'a16z') + +for e in ${!examples[@]}; do + gh=$(replace_digits "${examples[$e]}") + echo "Input : str = ${examples[$e]}" + echo -e "Output : $gh\n" +done + diff --git a/challenge-275/nelo-tovar/perl/ch-1.pl b/challenge-275/nelo-tovar/perl/ch-1.pl new file mode 100644 index 0000000000..c31e6bdb48 --- /dev/null +++ b/challenge-275/nelo-tovar/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 275 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-275/ +# +# Task 1 - Broken Keys +# + +use strict; +use warnings; +use v5.28; +use Data::Dump qw(dump); + +my @examples = ( + {sentence => "Perl Weekly Challenge", keys => ['l', 'a'] }, + {sentence => "Perl and Raku", keys => ['a']}, + {sentence => "Well done Team PWC", keys => ['l', 'o']}, + {sentence => "The joys of polyglottism", keys => ['T']}, +); + +sub broken_keys { + my $e = shift; + my @words = split(/\W+/,lc($e->{sentence})); + my $keys = lc(join('', $e->{keys}->@*)); + + return scalar grep(!/[$keys]/, @words) +} + +for my $elements (@examples) { + my $bk = broken_keys $elements; + + printf "Input : sentence = '%s' keys = %s\n", $elements->{sentence}, dump($elements->{keys}); + say 'Output : ', $bk; + say ' '; +} diff --git a/challenge-275/nelo-tovar/perl/ch-2.pl b/challenge-275/nelo-tovar/perl/ch-2.pl new file mode 100644 index 0000000000..77c1432e4c --- /dev/null +++ b/challenge-275/nelo-tovar/perl/ch-2.pl @@ -0,0 +1,41 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 275 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-275/ +# +# Task 2 - Replace Digits +# + +use strict; +use warnings; +use v5.28; + +my @examples = ('a1c1e1', 'a1b2c3d4', 'b2b', 'a16z'); + +sub replace_digits { + my $str = shift; + my $length = length($str); + my $last_letter = substr($str, 0, 1); + + for (my $i = 1; $i < $length; $i++) { + my $char = substr($str, $i, 1); + if ($char =~ /\d/) { + my $new_letter = chr(ord($last_letter) + $char); + + $str =~ s/$char/$new_letter/ + }else{ + $last_letter = $char + } + } + + return $str +} + +for my $elements (@examples) { + my $rd = replace_digits $elements; + + say 'Input : str = ', $elements; + say 'Output : ', $rd; + say ' '; +} |
