diff options
| author | ntovar <tovar.nelo@gmail.com> | 2024-02-02 17:25:00 -0500 |
|---|---|---|
| committer | ntovar <tovar.nelo@gmail.com> | 2024-02-02 17:25:00 -0500 |
| commit | 6b53ec676a93f96f8ae91cf61810bd91aa5896b4 (patch) | |
| tree | ec81b4c218206177428b29cb15c6d48044592046 | |
| parent | 4099837cf3689e1d78a66905fde9c5a45ff95940 (diff) | |
| download | perlweeklychallenge-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-x | challenge-254/nelo-tovar/bash/ch-1.sh | 32 | ||||
| -rwxr-xr-x | challenge-254/nelo-tovar/bash/ch-2.sh | 43 | ||||
| -rw-r--r-- | challenge-254/nelo-tovar/perl/ch-1.pl | 36 | ||||
| -rw-r--r-- | challenge-254/nelo-tovar/perl/ch-2.pl | 37 |
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 ' '; +} |
