aboutsummaryrefslogtreecommitdiff
path: root/challenge-246
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-246')
-rwxr-xr-xchallenge-246/nelo-tovar/bash/ch-1.sh13
-rwxr-xr-xchallenge-246/nelo-tovar/bash/ch-2.sh79
-rw-r--r--challenge-246/nelo-tovar/perl/ch-1.pl34
-rw-r--r--challenge-246/nelo-tovar/perl/ch-2.pl49
4 files changed, 175 insertions, 0 deletions
diff --git a/challenge-246/nelo-tovar/bash/ch-1.sh b/challenge-246/nelo-tovar/bash/ch-1.sh
new file mode 100755
index 0000000000..2161dbeab7
--- /dev/null
+++ b/challenge-246/nelo-tovar/bash/ch-1.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 246 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-246/
+#
+# Task 1 : 6 out of 49
+
+min=6
+max=49
+amount=6
+
+shuf -i $min-$max -n $amount | sort -n
diff --git a/challenge-246/nelo-tovar/bash/ch-2.sh b/challenge-246/nelo-tovar/bash/ch-2.sh
new file mode 100755
index 0000000000..349ad7778a
--- /dev/null
+++ b/challenge-246/nelo-tovar/bash/ch-2.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 246 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-246/
+#
+# Task 2 : Linear Recurrence of Second Order
+
+function min() {
+ local array=("$@")
+ local min=${array[0]}
+
+ for n in ${array[@]}; do
+ if [[ n -lt $min ]]; then
+ min=$n
+ fi
+ done
+
+ echo $min
+}
+
+function max() {
+ local array=("$@")
+ local max=${array[0]}
+
+ for n in ${array[@]}; do
+ if [[ n -gt $max ]]; then
+ max=$n
+ fi
+ done
+
+ echo $max
+}
+
+function is_lrso() {
+ local a=("$@")
+ local length=${#a[@]}
+ local min=$(min "${a[@]}")
+ local max=$(max "${a[@]}")
+ local b=$(($length-2))
+
+ for (( p = $min; p < $max; p++ )); do
+ for (( q = $min; q < $max; q++ )); do
+ count=0
+
+ for (( n = 2; n < $length; n++ )); do
+ value=$(($p * ${a[$n-2]} + $q * ${a[$n-1]}))
+
+ if [[ ${a[$n]} -eq $value ]]; then
+ ((count++))
+ fi
+ done
+
+ if [[ $count -eq $b ]] ; then
+ return 1
+ fi
+ done
+ done
+
+ return 0
+}
+
+example1='1 1 2 3 5'
+example2='4 2 4 5 7'
+example3='4 1 2 -3 8'
+
+for e in "$example1" "$example2" "$example3"; do
+#for e in "$example2"; do
+ array=($e)
+ echo "Input : a = (${array[@]})"
+ echo -n "Output : "
+ is_lrso "${array[@]}"
+ if [[ $? -eq 1 ]]; then
+ echo -e "True\n"
+ else
+ echo -e "False\n"
+ fi
+done
+
diff --git a/challenge-246/nelo-tovar/perl/ch-1.pl b/challenge-246/nelo-tovar/perl/ch-1.pl
new file mode 100644
index 0000000000..4a7d9b6edc
--- /dev/null
+++ b/challenge-246/nelo-tovar/perl/ch-1.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 246 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-246/
+#
+# Task 1 - 6 out of 49
+#
+
+use strict;
+use warnings;
+use v5.28;
+use Data::Dump qw(dump);
+
+
+sub get_6_of_49 {
+ my $low = 6;
+ my $up = 49;
+ my $amount = 6;
+ my @randoms = ();
+
+ while ( @randoms != $amount) {
+ my $random_number = int( rand($up - $low + 1)) + $low;
+
+ push @randoms, $random_number if ( ! grep( { $_ == $random_number } @randoms ) );
+ }
+
+ @randoms = sort {$a <=> $b} @randoms;
+
+ return \@randoms;
+}
+
+my $numbers = get_6_of_49;
+say join("\n", @$numbers)
diff --git a/challenge-246/nelo-tovar/perl/ch-2.pl b/challenge-246/nelo-tovar/perl/ch-2.pl
new file mode 100644
index 0000000000..60f6637861
--- /dev/null
+++ b/challenge-246/nelo-tovar/perl/ch-2.pl
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 246- By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-246/
+#
+# Task 2 - Linear Recurrence of Second Order
+#
+
+use strict;
+use warnings;
+use v5.28;
+use List::Util qw (min max);
+use Data::Dump qw(dump);
+
+my @examples = (
+ [ 1, 1, 2, 3, 5 ],
+ [ 4, 2, 4, 5, 7 ],
+ [ 4, 1, 2, -3, 8 ],
+);
+
+sub is_lrso {
+ my $a = shift;
+ my $length = scalar @$a;
+ my $min = min(@$a);
+ my $max = max(@$a);
+
+ for (my $p = $min; $p < $max; $p++) {
+ for (my $q = $min; $q < $max; $q++) {
+ my $count = 0;
+
+ for (my $n = 2; $n < $length; $n++) {
+ $count++ if ( $a->[$n] eq ($p * $a->[$n-2] + $q * $a->[$n-1]))
+ }
+
+ return 1 if ($count == ($length -2))
+ }
+ }
+
+ return 0;
+}
+
+for my $elements (@examples) {
+ my $lrso = is_lrso $elements;
+
+ say 'Input : @a = ', dump(@$elements);
+ say 'Output : ', $lrso ? 'True' : 'False';
+ say ' ';
+}