aboutsummaryrefslogtreecommitdiff
path: root/challenge-046/user-person/perl/ch-2.pl
blob: 4d6573d2808777d12be6c1289ca1067468da4d5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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