aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorntovar <tovar.nelo@gmail.com>2024-06-29 13:10:24 -0500
committerntovar <tovar.nelo@gmail.com>2024-06-29 13:10:24 -0500
commitf3a3d84a312f7ca52e11498568a42a7b0cea16fd (patch)
tree7c392738ad219c5267ef5ab3241079486fff6282
parente706d2548a3ce7ff5d3ae480224ee3ee6c5577de (diff)
downloadperlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.tar.gz
perlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.tar.bz2
perlweeklychallenge-club-f3a3d84a312f7ca52e11498568a42a7b0cea16fd.zip
Challenge 275. Add and Bash solutions. By Nelo Tovar
-rwxr-xr-xchallenge-275/nelo-tovar/bash/ch-1.sh34
-rwxr-xr-xchallenge-275/nelo-tovar/bash/ch-2.sh43
-rw-r--r--challenge-275/nelo-tovar/perl/ch-1.pl36
-rw-r--r--challenge-275/nelo-tovar/perl/ch-2.pl41
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 ' ';
+}