diff options
| -rwxr-xr-x | challenge-247/nelo-tovar/bash/ch-2.sh | 39 | ||||
| -rw-r--r-- | challenge-247/nelo-tovar/perl/ch-1.pl | 53 | ||||
| -rw-r--r-- | challenge-247/nelo-tovar/perl/ch-2.pl | 50 |
3 files changed, 142 insertions, 0 deletions
diff --git a/challenge-247/nelo-tovar/bash/ch-2.sh b/challenge-247/nelo-tovar/bash/ch-2.sh new file mode 100755 index 0000000000..c45c8520a0 --- /dev/null +++ b/challenge-247/nelo-tovar/bash/ch-2.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# +# The Weekly Challenge 247 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-247/ +# +# Task 2 : Most Frequent Letter Pair + +function most_frecuent_letter_pair() { + local s=$1 + local length=$((${#s} - 1)) + local pair='' + local occurrence=0 + + for (( i = 0; i < $length; i++ )); do + letters=${s:$i:2} + + count=$(echo $s | grep -o $letters | wc -l) + if [ $count -gt $occurrence ]; then + pair=$letters + occurrence=$count + elif [[ $count -eq $occurrence && $letters < $pair ]]; then + pair=$letters + fi + done + + echo $pair +} + +example1='abcdbca' +example2='cdeabeabfcdfabgcd' + +for e in "$example1" "$example2"; do + array=($e) + pair=$(most_frecuent_letter_pair $e) + echo "Input : s = $e" + echo -e "Output : $pair\n" +done + diff --git a/challenge-247/nelo-tovar/perl/ch-1.pl b/challenge-247/nelo-tovar/perl/ch-1.pl new file mode 100644 index 0000000000..9347116781 --- /dev/null +++ b/challenge-247/nelo-tovar/perl/ch-1.pl @@ -0,0 +1,53 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 247 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-247/ +# +# Task 1 - Secret Santa +# + +use strict; +use warnings; +use v5.28; +use List::Util qw /shuffle/; +use Data::Dump qw(dump); + +my @examples = ( + [ 'Mr. Wall', 'Mrs. Wall', 'Mr. Anwar', 'Mrs. Anwar', 'Mr. Conway', 'Mr. Cross'], + [ 'Mr. Wall', 'Mrs. Wall', 'Mr. Anwar' ], +); + + + +sub secret_santa_generator { + my $temp = shift; + my @names = shuffle @$temp; + my @receivers = shuffle @names; + my @asignated; + + foreach my $giver (@names) { + $giver =~ /(\w+)$/; + my $family_name = $1; + + my @eligibles = grep {$_ !~ /$family_name/} @receivers; # The elegibles are not family member + if (scalar @eligibles == 0) { + @eligibles = grep {$_ ne $giver} @receivers; # The elegibles are family member + } + + my $the_chosen = shift @eligibles; + push( @asignated, {$giver => $the_chosen}); + + @receivers = shuffle grep { $_ ne $the_chosen } @receivers; + } + + return \@asignated; +} + +for my $elements (@examples) { + my $secret_santa = secret_santa_generator $elements; + + say 'Input : @lang = ', dump(@$elements); + say 'Output : ', dump(@$secret_santa); + say ' '; +} diff --git a/challenge-247/nelo-tovar/perl/ch-2.pl b/challenge-247/nelo-tovar/perl/ch-2.pl new file mode 100644 index 0000000000..ee64217fa5 --- /dev/null +++ b/challenge-247/nelo-tovar/perl/ch-2.pl @@ -0,0 +1,50 @@ +#!/usr/bin/env perl + +# The Weekly Challenge 247 - By Nelo Tovar +# +# https://theweeklychallenge.org/blog/perl-weekly-challenge-247/ +# +# Task 2 - Most Frequent Letter Pair +# + +use strict; +use warnings; +use v5.28; +use Algorithm::Combinatorics qw(variations); +use Data::Dump qw(dump); + +my @examples = ( + 'abcdbca', + 'cdeabeabfcdfabgcd', +); + +sub most_frequent_letter_pair { + my $s = shift; + my $length = length($s) - 1; + my $pair = ''; + my $occurrence = 0; + + for (my $i = 0; $i < $length; $i++) { + my $letters = substr($s, $i, 2); + + my $count = () = ($s =~ m/$letters/g); + if ($count > $occurrence) { + $pair = $letters; + $occurrence = $count; + }elsif (( $count == $occurrence ) and ($letters lt $pair)){ + $pair = $letters; + } + + } + + return $pair; +} + +for my $elements (@examples) { + # my $lot = largest_of_three $elements; + my $pair = most_frequent_letter_pair $elements; + + say 'Input : $s = ', dump($elements); + say 'Output : ', $pair; + say ' '; +} |
