From f33dee7758eb47f54150aaa4c608ce1e61a7302c Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:19:09 +0000 Subject: Task 1 & 2 --- challenge-108/perlboy1967/perl/ch-1.pl | 18 +++++++++++++++ challenge-108/perlboy1967/perl/ch-2.pl | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100755 challenge-108/perlboy1967/perl/ch-1.pl create mode 100755 challenge-108/perlboy1967/perl/ch-2.pl diff --git a/challenge-108/perlboy1967/perl/ch-1.pl b/challenge-108/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..9b636e7ee4 --- /dev/null +++ b/challenge-108/perlboy1967/perl/ch-1.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 108 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-108/#TASK1 +# +# Task 1 - Locate Memory +# +# Author: Niels 'PerlBoy' van Dijke + +use v5.16; +use strict; +use warnings; + +use constant TEST => 1; + +\TEST =~ m#SCALAR\((?.*?)\)#; + +printf "%s\n" , $+{location} // 'undef', diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl new file mode 100755 index 0000000000..750364b8c0 --- /dev/null +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 108 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-108/#TASK1 +# +# Task 1 - Bell Numbers +# +# Author: Niels 'PerlBoy' van Dijke + +use v5.16; +use strict; +use warnings; + +my @bn = (1); + +# Using the 'Bell triangle' algorithm + +my $bnT = [[1]]; +my $bTRidx = 1; + +while (scalar(@bn) < 10) { + my $prevTRdim = scalar(@{$bnT->[$bTRidx-1]}); + + # Copy + $bnT->[$bTRidx][0] = $bnT->[$bTRidx-1][$prevTRdim-1]; + foreach my $bTCidx (1 .. $prevTRdim) { + + # Add + $bnT->[$bTRidx][$bTCidx] = + $bnT->[$bTRidx-1][$bTCidx-1] + + $bnT->[$bTRidx][$bTCidx-1]; + + push(@bn, $bnT->[$bTRidx][$bTCidx]); + last if (scalar(@bn) >= 10); + } + $bTRidx++; +} + +# Print +printf "%s\n", join(' ',@bn); -- cgit From dbb4d44017925091fa42623f9081b5cbf47027cc Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:30:01 +0000 Subject: Corrected the scipt ch-2.pl after rereading the Wikipedia page. --- challenge-108/perlboy1967/perl/ch-2.pl | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl index 750364b8c0..3ded2c8eb9 100755 --- a/challenge-108/perlboy1967/perl/ch-2.pl +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -11,14 +11,14 @@ use v5.16; use strict; use warnings; -my @bn = (1); +my @bn = 1; # Using the 'Bell triangle' algorithm my $bnT = [[1]]; -my $bTRidx = 1; -while (scalar(@bn) < 10) { +foreach my $bTRidx (1..10) { + my $prevTRdim = scalar(@{$bnT->[$bTRidx-1]}); # Copy @@ -29,11 +29,8 @@ while (scalar(@bn) < 10) { $bnT->[$bTRidx][$bTCidx] = $bnT->[$bTRidx-1][$bTCidx-1] + $bnT->[$bTRidx][$bTCidx-1]; - - push(@bn, $bnT->[$bTRidx][$bTCidx]); - last if (scalar(@bn) >= 10); } - $bTRidx++; + push(@bn, $bnT->[$bTRidx][-1]); } # Print -- cgit From ab90f89d31b858641b8212ade0b7b7def7f74f1e Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:33:32 +0000 Subject: Simplified the index code (because it can) --- challenge-108/perlboy1967/perl/ch-2.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl index 3ded2c8eb9..3f086e7f1c 100755 --- a/challenge-108/perlboy1967/perl/ch-2.pl +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -18,7 +18,6 @@ my @bn = 1; my $bnT = [[1]]; foreach my $bTRidx (1..10) { - my $prevTRdim = scalar(@{$bnT->[$bTRidx-1]}); # Copy @@ -30,7 +29,8 @@ foreach my $bTRidx (1..10) { $bnT->[$bTRidx-1][$bTCidx-1] + $bnT->[$bTRidx][$bTCidx-1]; } - push(@bn, $bnT->[$bTRidx][-1]); + + push(@bn, $bnT->[-1][-1]); } # Print -- cgit From 3d6a56a8ad216f679eb7526b84aefae6c0e8f519 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:37:11 +0000 Subject: Cosmetic changes --- challenge-108/perlboy1967/perl/ch-2.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl index 3f086e7f1c..f6341ef4cc 100755 --- a/challenge-108/perlboy1967/perl/ch-2.pl +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -1,9 +1,9 @@ #!/usr/bin/perl # Perl Weekly Challenge - 108 -# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-108/#TASK1 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-108/#TASK2 # -# Task 1 - Bell Numbers +# Task 2 - Bell Numbers # # Author: Niels 'PerlBoy' van Dijke -- cgit From f1ff8d78814306df940b1b31205a14d9c6f3859f Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:39:00 +0000 Subject: If we are asked to provide 10 then give 10 (not 11)... --- challenge-108/perlboy1967/perl/ch-2.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl index f6341ef4cc..f13ae7a643 100755 --- a/challenge-108/perlboy1967/perl/ch-2.pl +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -17,7 +17,7 @@ my @bn = 1; my $bnT = [[1]]; -foreach my $bTRidx (1..10) { +foreach my $bTRidx (1..9) { my $prevTRdim = scalar(@{$bnT->[$bTRidx-1]}); # Copy -- cgit From 1f0f50c52396be3a1e4ace5c35c736ecbde05db5 Mon Sep 17 00:00:00 2001 From: Niels van Dijke Date: Thu, 15 Apr 2021 08:44:51 +0000 Subject: Pffff.... Not the at my sharpest.... --- challenge-108/perlboy1967/perl/ch-2.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-108/perlboy1967/perl/ch-2.pl b/challenge-108/perlboy1967/perl/ch-2.pl index f13ae7a643..7a241b6215 100755 --- a/challenge-108/perlboy1967/perl/ch-2.pl +++ b/challenge-108/perlboy1967/perl/ch-2.pl @@ -11,13 +11,13 @@ use v5.16; use strict; use warnings; -my @bn = 1; +my @bn = (1); # Using the 'Bell triangle' algorithm my $bnT = [[1]]; -foreach my $bTRidx (1..9) { +foreach my $bTRidx (1..8) { my $prevTRdim = scalar(@{$bnT->[$bTRidx-1]}); # Copy @@ -34,4 +34,4 @@ foreach my $bTRidx (1..9) { } # Print -printf "%s\n", join(' ',@bn); +printf "%s\n", join(' ',1,@bn); -- cgit