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
|