From ac16aa175ac5acd9fcb0915a3ded6c6cd621604e Mon Sep 17 00:00:00 2001 From: user-person <60802990+user-person@users.noreply.github.com> Date: Sun, 9 Feb 2020 02:44:48 -0500 Subject: Create ch-2.pl --- challenge-046/user-person/perl/ch-2.pl | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 challenge-046/user-person/perl/ch-2.pl diff --git a/challenge-046/user-person/perl/ch-2.pl b/challenge-046/user-person/perl/ch-2.pl new file mode 100644 index 0000000000..4d6573d280 --- /dev/null +++ b/challenge-046/user-person/perl/ch-2.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl + +########################################################################### +# script name: ch-2.pl # +# # +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ # +# # +########################################################################### + +use strict; +use warnings; +use diagnostics; + +my @doors = (); +my $MAX = 500; + +sub change { + return $_[0] eq "OPENED" ? "CLOSED" : "OPENED"; +} + +push @doors, "CLOSED" foreach (0..$MAX); + +ROOM: +for ( my $i = 1; $i <= $MAX; ++$i ) { + + if ($i > $MAX / 2 ) { + $doors[$i] = change $doors[$i]; + next ROOM; + } + + for ( my $j = 1; $j <= $MAX; ++$j ) { + if ($j % $i == 0) { + $doors[$j] = change $doors[$j]; + } + } +} + +for ( my $k = 1; $k <= $MAX; ++$k ) { + print "$k " if $doors[$k] eq "OPENED"; +} +print "\n"; + +__END__ +ch-2.pl output: + +1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484 -- cgit