#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11148831 use warnings; sub quarterturn { my $new = ''; $new .= "\n" while s/.$/ $new .= $&; '' /gem; return $new; } my $forest = do { local (@ARGV, $/) = 'input8.txt'; <> }; my $visible = ''; for ( 0 .. 3 ) { $visible |= $forest =~ s{(.)(?=(.*))}{ $2 =~ /[$1-9]/ ^ 1 }ger; $_ = quarterturn for $forest, $visible; } my $totalvisible = $visible =~ tr/1//; # count ones print "$forest\n$visible\ntotal visible: $totalvisible\n";