aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-247/nelo-tovar/bash/ch-2.sh39
-rw-r--r--challenge-247/nelo-tovar/perl/ch-1.pl53
-rw-r--r--challenge-247/nelo-tovar/perl/ch-2.pl50
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 ' ';
+}