aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorntovar <tovar.nelo@gmail.com>2024-02-02 17:25:00 -0500
committerntovar <tovar.nelo@gmail.com>2024-02-02 17:25:00 -0500
commit6b53ec676a93f96f8ae91cf61810bd91aa5896b4 (patch)
treeec81b4c218206177428b29cb15c6d48044592046
parent4099837cf3689e1d78a66905fde9c5a45ff95940 (diff)
downloadperlweeklychallenge-club-6b53ec676a93f96f8ae91cf61810bd91aa5896b4.tar.gz
perlweeklychallenge-club-6b53ec676a93f96f8ae91cf61810bd91aa5896b4.tar.bz2
perlweeklychallenge-club-6b53ec676a93f96f8ae91cf61810bd91aa5896b4.zip
Challenge 254. Add Perl and Bash solutions. By Nelo Tovar.
-rwxr-xr-xchallenge-254/nelo-tovar/bash/ch-1.sh32
-rwxr-xr-xchallenge-254/nelo-tovar/bash/ch-2.sh43
-rw-r--r--challenge-254/nelo-tovar/perl/ch-1.pl36
-rw-r--r--challenge-254/nelo-tovar/perl/ch-2.pl37
4 files changed, 148 insertions, 0 deletions
diff --git a/challenge-254/nelo-tovar/bash/ch-1.sh b/challenge-254/nelo-tovar/bash/ch-1.sh
new file mode 100755
index 0000000000..65c959bbce
--- /dev/null
+++ b/challenge-254/nelo-tovar/bash/ch-1.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 254 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-254/
+#
+# Task 1 : Three Power
+
+function three_power() {
+ local number=$1
+ local exponent=$2
+
+ for i in $(seq 0 $number); do
+ x=$(($i ** $exponent))
+ if [ $x -eq $number ]; then
+ echo true
+ return
+ fi
+ done
+
+ echo false
+}
+
+example1='27 0 6'
+
+for e in $example1; do
+ po=$(three_power $e 3)
+ echo "Input : $n = $e"
+ echo "Output : $po"
+ echo ""
+done
+
diff --git a/challenge-254/nelo-tovar/bash/ch-2.sh b/challenge-254/nelo-tovar/bash/ch-2.sh
new file mode 100755
index 0000000000..93e0de4930
--- /dev/null
+++ b/challenge-254/nelo-tovar/bash/ch-2.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 254 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-254/
+#
+# Task 2 : Reverse Vowels
+
+function reverse_vowels() {
+ local s=$1
+ local length=${#s}
+ local letters=()
+ local vowels=()
+ local pattern="[aeiouAEIOU]"
+
+ for (( i = 0; i < $length; i++ )); do
+ l=${s:$i:1}
+
+ if [[ "$l" =~ $pattern ]]; then
+ vowels+=($l)
+ fi
+ letters+=($l)
+ done
+
+ local last=$((${#vowels[@]} - 1))
+ for (( i = 0; i < $length; i++ )); do
+ if [[ "${letters[$i]}" =~ $pattern ]]; then
+ letters[$i]=${vowels[$last]};
+ ((last--))
+ fi
+ done
+
+ printf "%s" ${letters[@]}
+}
+
+example1='Raku Perl Julia Uiua'
+
+for e in $example1; do
+ rh=$(reverse_vowels "$e")
+ echo "Input : s = $e"
+ echo -e "Output : $rh\n"
+done
+
diff --git a/challenge-254/nelo-tovar/perl/ch-1.pl b/challenge-254/nelo-tovar/perl/ch-1.pl
new file mode 100644
index 0000000000..f4976107ed
--- /dev/null
+++ b/challenge-254/nelo-tovar/perl/ch-1.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 254 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-254/
+#
+# Task 1 - Three Power
+#
+
+use strict;
+use warnings;
+use v5.28;
+use Data::Dump qw(dump);
+
+my @examples = (27, 0, 6);
+
+sub is_power_of {
+ my $number = shift;
+ my $exponent = shift;
+
+ for (my $i = 0; $i <= $number; $i++) {
+
+ return 1 if (($i ** $exponent) == $number)
+
+ }
+
+ return 0
+}
+
+for my $elements (@examples) {
+ my $po = is_power_of $elements, 3;
+
+ say 'Input : $n = ', dump($elements);
+ say 'Output : ', $po ? 'true' : 'false';
+ say ' ';
+}
diff --git a/challenge-254/nelo-tovar/perl/ch-2.pl b/challenge-254/nelo-tovar/perl/ch-2.pl
new file mode 100644
index 0000000000..a6c80ffd03
--- /dev/null
+++ b/challenge-254/nelo-tovar/perl/ch-2.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 254 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-254/
+#
+# Task 2 - Reverse Vowels
+#
+
+use strict;
+use warnings;
+use v5.28;
+use Data::Dump qw(dump);
+
+my @examples = ("Raku", "Perl", "Julia", "Uiua");
+
+sub reverse_vowels {
+ my $s = shift;
+ my @letters = split(//, $s);
+ my @vowels = reverse(grep { $_ =~ /[aeiou]/ix } @letters);
+
+ for (my $i = 0; $i < @letters; $i++) {
+ if ($letters[$i] =~ /[aeiou]/i) {
+ $letters[$i] = shift @vowels;
+ }
+ }
+
+ return join('', @letters);
+}
+
+for my $elements (@examples) {
+ my $rv = reverse_vowels $elements;
+
+ say 'Input : $s = ', dump($elements);
+ say 'Output : ', $rv;
+ say ' ';
+}