diff options
| author | ntovar <tovar.nelo@gmail.com> | 2023-12-08 20:55:41 -0500 |
|---|---|---|
| committer | ntovar <tovar.nelo@gmail.com> | 2023-12-08 20:55:41 -0500 |
| commit | f63fdf760d2d8abdcb67d23cbb40fa6ef59bbc13 (patch) | |
| tree | 4d576197feb1f21221fa8726db199902efd4e361 | |
| parent | f43e58f9d951d2dacc7175d65662eb2be7e06165 (diff) | |
| download | perlweeklychallenge-club-f63fdf760d2d8abdcb67d23cbb40fa6ef59bbc13.tar.gz perlweeklychallenge-club-f63fdf760d2d8abdcb67d23cbb40fa6ef59bbc13.tar.bz2 perlweeklychallenge-club-f63fdf760d2d8abdcb67d23cbb40fa6ef59bbc13.zip | |
Adding Perl and Bash solutions. By Nelo Tovar.
| -rwxr-xr-x | challenge-246/nelo-tovar/bash/ch-1.sh | 13 | ||||
| -rwxr-xr-x | challenge-246/nelo-tovar/bash/ch-2.sh | 79 | ||||
| -rw-r--r-- | challenge-246/nelo-tovar/perl/ch-1.pl | 34 | ||||
| -rw-r--r-- | challenge-246/nelo-tovar/perl/ch-2.pl | 49 |
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 ' '; +} |
