aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-284/nelo-tovar/bash/ch-1.sh44
-rwxr-xr-xchallenge-284/nelo-tovar/bash/ch-2.sh57
-rw-r--r--challenge-284/nelo-tovar/perl/ch-1.pl40
-rw-r--r--challenge-284/nelo-tovar/perl/ch-2.pl46
4 files changed, 187 insertions, 0 deletions
diff --git a/challenge-284/nelo-tovar/bash/ch-1.sh b/challenge-284/nelo-tovar/bash/ch-1.sh
new file mode 100755
index 0000000000..df67644114
--- /dev/null
+++ b/challenge-284/nelo-tovar/bash/ch-1.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 284 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-284/
+#
+# Task 1 - Lucky Integer
+
+function frequency() {
+ local array=("$@")
+ declare -A local frequency
+
+ for i in ${array[@]}; do
+ temp=${frequency[$i]}
+ ((temp++))
+ frequency[$i]=$temp
+ done
+
+ echo "${frequency[@]@K}"
+}
+
+function lucky_integer() {
+ local nums=("$@")
+ local lucky_integer=-1
+ declare -A local frequencies="($(frequency "${nums[@]}"))"
+
+ for key in ${!frequencies[@]}; do
+ if [ ${frequencies[$key]} -eq $key ] && [ $key -gt $lucky_integer ]; then
+ lucky_integer=$key
+ fi
+ done
+
+ echo $lucky_integer
+}
+
+examples=('2 2 3 4' '1 2 2 3 3 3' '1 1 1 3')
+
+for e in ${!examples[@]}; do
+ li=($(lucky_integer "${examples[$e]}"))
+ echo "Input : nums = (${examples[$e]})"
+ echo "Output : $li"
+ echo ""
+done
+
diff --git a/challenge-284/nelo-tovar/bash/ch-2.sh b/challenge-284/nelo-tovar/bash/ch-2.sh
new file mode 100755
index 0000000000..272225b74d
--- /dev/null
+++ b/challenge-284/nelo-tovar/bash/ch-2.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 284 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-284/
+#
+# Task 2 - Relative Sort
+
+function frequency() {
+ local array=("$@")
+ declare -A local frequency
+
+ for i in ${array[@]}; do
+ temp=${frequency[$i]}
+ ((temp++))
+ frequency[$i]=$temp
+ done
+
+ echo "${frequency[@]@K}"
+}
+
+function relative_sort() {
+ local list1=("$1")
+ local list2=("$2")
+ declare -A local frequencies="($(frequency "${list1[@]}"))"
+ local sorted=()
+
+ for n in ${list2[@]}; do
+ if [[ -n "${frequencies[$n]}" ]]; then
+ for i in $(seq 1 ${frequencies[$n]}); do
+ sorted+=($n)
+ done
+ unset frequencies[$n]
+ fi
+ done
+
+ IFS=$'\n' r=($(sort -n <<<"${!frequencies[*]}"))
+
+ for n in ${r[@]}; do
+ for i in $(seq 1 ${frequencies[$n]}); do
+ sorted+=($n)
+ done
+ done
+
+ echo ${sorted[@]}
+}
+
+examples1=('2 3 9 3 1 4 6 7 2 8 5' '3 3 4 6 2 4 2 1 3' '3 0 5 0 2 1 4 1 1')
+examples2=('2 1 4 3 5 6' '1 3 2' '1 0 3 2' )
+
+for e in "${!examples1[@]}"; do
+ rs=$(relative_sort "${examples1[$e]}" "${examples2[$e]}")
+ echo "Input : list1 = (${examples1[$e]})"
+ echo " list2 = (${examples2[$e]})"
+ echo -e "Output : ${rs[@]}\n"
+done
+
diff --git a/challenge-284/nelo-tovar/perl/ch-1.pl b/challenge-284/nelo-tovar/perl/ch-1.pl
new file mode 100644
index 0000000000..2675a9f8d9
--- /dev/null
+++ b/challenge-284/nelo-tovar/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 284 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-284/
+#
+# Task 1 - Lucky Integer
+#
+
+use strict;
+use warnings;
+use v5.28;
+use List::MoreUtils qw(frequency);
+use Data::Dump qw(dump);
+
+my @examples = (
+ [ 2, 2, 3, 4 ],
+ [ 1, 2, 2, 3, 3, 3 ],
+ [ 1, 1, 1, 3 ],
+);
+
+sub lucky_integer {
+ my $nums = shift;
+ my %frequencies = frequency @$nums;
+ my $lucky_integer = -1;
+
+ foreach my $key (keys %frequencies) {
+ $lucky_integer = $frequencies{$key} if ( ($frequencies{$key} == $key) and ($key > $lucky_integer ));
+ }
+
+ return $lucky_integer
+}
+
+for my $elements (@examples) {
+ my $li = lucky_integer $elements;
+
+ say 'Input : @ints = ', dump(@$elements);
+ say 'Output : ', $li;
+ say ' ';
+}
diff --git a/challenge-284/nelo-tovar/perl/ch-2.pl b/challenge-284/nelo-tovar/perl/ch-2.pl
new file mode 100644
index 0000000000..ac83af3003
--- /dev/null
+++ b/challenge-284/nelo-tovar/perl/ch-2.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 284 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-284/
+#
+# Task 2 - Relative Sort
+#
+
+use strict;
+use warnings;
+use v5.28;
+use List::Util qw (min max);
+use Algorithm::Combinatorics qw(combinations);
+use Data::Dump qw(dump);
+
+my @examples = (
+ [ [2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5], [2, 1, 4, 3, 5, 6] ],
+ [ [3, 3, 4, 6, 2, 4, 2, 1, 3], [1, 3, 2] ],
+ [ [3, 0, 5, 0, 2, 1, 4, 1, 1], [1, 0, 3, 2] ],
+);
+
+sub relative_sort {
+ my $e = shift;
+ my @list1 = $e->[0]->@*;
+ my @list2 = $e->[1]->@*;
+ my @sorted;
+
+ for my $n (@list2) {
+ push @sorted, grep { $_ == $n } @list1;
+ @list1 = grep { $_ != $n } @list1;
+ }
+
+ push @sorted, sort @list1;
+
+ return \@sorted
+}
+
+for my $elements (@examples) {
+ my $rs = relative_sort $elements;
+
+ say 'Input : @list1 = ', dump($elements->[0]);
+ say ' @list2 = ', dump($elements->[1]);
+ say 'Output : ', dump($rs);
+ say ' ';
+}