100 doors

unoptimized

my @doors = False xx 101;
 
(.=not for @doors[0, $_ ... 100]) for 1..100;
 
say "Door $_ is ", <closed open>[ @doors[$_] ] for 1..100;

optimized

say "Door $_ is open" for map {$^n ** 2}, 1..10;

probably the most compact idiom

say 'Door $_ is open' for (1..10)»²;

Here's a version using the cross meta-operator instead of a map:

 say "Door $_ is open" for 1..10 X** 2;

This one prints both opened and closed doors:

say "Door $_ is ", <closed open>[.sqrt == .sqrt.floor] for 1..100;

verbose version, but uses ordinary components

Output:

Last updated

Was this helpful?