diff options
| author | ntovar <tovar.nelo@gmail.com> | 2024-02-16 17:59:42 -0500 |
|---|---|---|
| committer | ntovar <tovar.nelo@gmail.com> | 2024-02-16 17:59:42 -0500 |
| commit | a7539c05dcd3d036e0970f3c485e3801ec3490bd (patch) | |
| tree | b0451b834e31417cf67d6b4da3388322b7c7c7bc /challenge-256 | |
| parent | 3f3e0798a68401ce1d67a5e1534f69de16856e82 (diff) | |
| download | perlweeklychallenge-club-a7539c05dcd3d036e0970f3c485e3801ec3490bd.tar.gz perlweeklychallenge-club-a7539c05dcd3d036e0970f3c485e3801ec3490bd.tar.bz2 perlweeklychallenge-club-a7539c05dcd3d036e0970f3c485e3801ec3490bd.zip | |
Challenge 256. Add Perl and Bash solutions. By Nelo Tovar.
Diffstat (limited to 'challenge-256')
| -rwxr-xr-x | challenge-256/nelo-tovar/bash/ch-1.sh | 38 | ||||
| -rwxr-xr-x | challenge-256/nelo-tovar/bash/ch-2.sh | 40 | ||||
| -rw-r--r-- | challenge-256/nelo-tovar/perl/ch-1.pl | 46 | ||||
| -rw-r--r-- | challenge-256/nelo-tovar/perl/ch-2.pl | 36 |
4 files changed, 160 insertions, 0 deletions
diff --git a/challenge-256/nelo-tovar/bash/ch-1.sh b/challenge-256/nelo-tovar/bash/ch-1.sh new file mode 100755 index 0000000000..5d64f8faf5 --- /dev/null +++ b/challenge-256/nelo-tovar/bash/ch-1.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# +# The Weekly Challenge 256 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-256/ +# +# Task 1 : Maximum Pairs + +function maximum_pairs() { + local words=("$@") + local length=${#words[@]} + local max=0 + + for (( i = 0; i < $length; i++ )); do + for (( j = $i + 1 ; j < $length; j++ )); do + reverse=$(echo ${words[$j]} | rev) + if [[ ${words[$i]} == $reverse ]]; then + ((max++)) + break + fi + done + done + + echo $max +} + +example1='ab de ed bc' +example2='aa ba cd ed' +example3='uv qp st vu mn pq' + +for e in "$example1" "$example2" "$example3"; do + array=($e) + mp=($(maximum_pairs "${array[@]}")) + echo "Input : words = (${array[@]})" + echo "Output : $mp" + echo "" +done + diff --git a/challenge-256/nelo-tovar/bash/ch-2.sh b/challenge-256/nelo-tovar/bash/ch-2.sh new file mode 100755 index 0000000000..1826e13196 --- /dev/null +++ b/challenge-256/nelo-tovar/bash/ch-2.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# +# The Weekly Challenge 256 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-256/ +# +# Task 2 : Merge Strings + +function merge_string() { + local str1=$1 + local len_str1=${#str1} + local str2=$2 + local len_str2=${#str2} + local merged='' + + for (( i = 0; i < $len_str1; i++ )); do + merged+=${str1:$i:1} + + if [ $i -lt $len_str2 ]; then + merged+=${str2:$i:1} + fi + done + + if [ $len_str2 -gt $len_str1 ]; then + merged+=${str2:$len_str1} + fi + echo $merged +} + +example1='abcd 1234' +example2='abc 12345' +example3='abcde 123' + +for e in "$example1" "$example2" "$example3"; do + array=($e) + ms=$(merge_string "${array[0]}" "${array[1]}") + echo "Input : str1 = ${array[0]} str2 = ${array[1]}" + echo -e "Output : $ms\n" +done + diff --git a/challenge-256/nelo-tovar/perl/ch-1.pl b/challenge-256/nelo-tovar/perl/ch-1.pl new file mode 100644 index 0000000000..ebc3105773 --- /dev/null +++ b/challenge-256/nelo-tovar/perl/ch-1.pl @@ -0,0 +1,46 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 256 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-256/ +# +# Task 1 - Maximum Pairs +# + +use strict; +use warnings; +use v5.28; +use Data::Dump qw(dump); + +my @examples = ( + ["ab", "de", "ed", "bc"], + ["aa", "ba", "cd", "ed"], + ["uv", "qp", "st", "vu", "mn", "pq"] +); + +sub maximum_pairs { + my $words = shift; + my $length = scalar @$words; + my $max = 0; + + for (my $i = 0; $i < $length - 1; $i++) { + for (my $j = $i + 1; $j < $length; $j++) { + my $reverse = join('', reverse(split(//, @$words[$j]))); + + if (@$words[$i] eq $reverse){ + $max++; + last + } + } + } + + return $max +} + +for my $elements (@examples) { + my $mp = maximum_pairs $elements; + + say 'Input : @words = ', dump(@$elements); + say 'Output : ', $mp; + say ' '; +} diff --git a/challenge-256/nelo-tovar/perl/ch-2.pl b/challenge-256/nelo-tovar/perl/ch-2.pl new file mode 100644 index 0000000000..70b5263653 --- /dev/null +++ b/challenge-256/nelo-tovar/perl/ch-2.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 256 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-256/ +# +# Task 2 - Merge Strings +# + +use strict; +use warnings; +use v5.28; +use List::MoreUtils qw (mesh); + +my @examples = ( + [ 'abcd', '1234' ], + [ 'abc', '12345' ], + [ 'abcde', '123' ], +); + +sub merge_strings { + my @str1 = split(//, shift); + my @str2 = split(//, shift); + my @merged = grep { defined $_ } mesh(@str1, @str2); + + return join('', @merged); +} + +for my $elements (@examples) { + my $ms = merge_strings @$elements[0], @$elements[1]; + + # say 'Input : @nums = ', dump(@$elements); + printf "Input: str1 = %s str2 = %s\n", @$elements[0], @$elements[1]; + say 'Output : ', $ms; + say ' '; +} |
