diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-09 19:04:58 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-02-09 19:04:58 +0000 |
| commit | 52ac0b8e5b97473b74872273c1d8b13ff05effcd (patch) | |
| tree | 35303c1354e59258f4035902b324ec298ce5c974 /challenge-046 | |
| parent | a0b172cb3fdd9b7c30e09551fc3b8bd665df3879 (diff) | |
| download | perlweeklychallenge-club-52ac0b8e5b97473b74872273c1d8b13ff05effcd.tar.gz perlweeklychallenge-club-52ac0b8e5b97473b74872273c1d8b13ff05effcd.tar.bz2 perlweeklychallenge-club-52ac0b8e5b97473b74872273c1d8b13ff05effcd.zip | |
- Added solutions by Laurent Rosenfeld.
Diffstat (limited to 'challenge-046')
| -rw-r--r-- | challenge-046/laurent-rosenfeld/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-046/laurent-rosenfeld/perl/ch-1.pl | 25 | ||||
| -rw-r--r-- | challenge-046/laurent-rosenfeld/perl/ch-2.pl | 19 | ||||
| -rw-r--r-- | challenge-046/laurent-rosenfeld/raku/ch-1.p6 | 23 | ||||
| -rw-r--r-- | challenge-046/laurent-rosenfeld/raku/ch-2.p6 | 14 |
5 files changed, 82 insertions, 0 deletions
diff --git a/challenge-046/laurent-rosenfeld/blog.txt b/challenge-046/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..606496c69e --- /dev/null +++ b/challenge-046/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2020/02/perl-weekly-challenge-46-garbled-message-and-room-open.html diff --git a/challenge-046/laurent-rosenfeld/perl/ch-1.pl b/challenge-046/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..6f11cf85fa --- /dev/null +++ b/challenge-046/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,25 @@ +use strict; +use warnings; +use feature "say"; + +my $garbled = <<'END_MSG'; +P + 2 l ! a t o +1 e 8 0 R $ 4 u +5 - r ] + a > / +P x w l b 3 k \ +2 e 3 5 R 8 y u +< ! r ^ ( ) k 0 +END_MSG + +my @AoA = map { [ split /\s+/, $_] } split /[\r\n]+/, $garbled; +my @transposed; +for my $i (0 .. $#AoA) { + $transposed[$_][$i] = $AoA[$i][$_] for 0.. scalar @{$AoA[$i]} -1; +} +my @msg = ""; +for my $line_ref (@transposed) { + my %counter; + $counter{$_}++ for @$line_ref; + push @msg, grep { $counter{$_} > 1 } keys %counter; +} +say @msg; diff --git a/challenge-046/laurent-rosenfeld/perl/ch-2.pl b/challenge-046/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..115e1a23ee --- /dev/null +++ b/challenge-046/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,19 @@ +use strict; +use warnings; +use feature "say"; +use Data::Dumper; +use constant MAX => 50; + +# 1 => open, 0 => closed + +my @rooms = (1) x (MAX + 1); # (first employee) +my $start = 1; +for (2..MAX) { + $start++; + my $door = $start; + while ($door <= MAX) { + $rooms[$door] = $rooms[$door] ? 0 : 1; + $door += $start; + } +} +say join " ", @rooms[1..MAX]; diff --git a/challenge-046/laurent-rosenfeld/raku/ch-1.p6 b/challenge-046/laurent-rosenfeld/raku/ch-1.p6 new file mode 100644 index 0000000000..4aa8def134 --- /dev/null +++ b/challenge-046/laurent-rosenfeld/raku/ch-1.p6 @@ -0,0 +1,23 @@ +use v6; + +my $garbled = q:to/END_MSG/; +P + 2 l ! a t o +1 e 8 0 R $ 4 u +5 - r ] + a > / +P x w l b 3 k \ +2 e 3 5 R 8 y u +< ! r ^ ( ) k 0 +END_MSG + +my @AoA = map { my @a = split /\s+/, $_; @a }, split /<[\r\n]>+/, $garbled; +my @transposed; +for (0 .. @AoA.end) -> $i { + @transposed[$_][$i] = @AoA[$i][$_] for 0.. (@AoA[$i]).elems -1; +} +my @msg = ""; +for @transposed -> $line { + my BagHash $counter; + $counter{$_}++ for @$line; + push @msg, grep { $counter{$_} > 1 }, keys $counter; +} +say join "", @msg; diff --git a/challenge-046/laurent-rosenfeld/raku/ch-2.p6 b/challenge-046/laurent-rosenfeld/raku/ch-2.p6 new file mode 100644 index 0000000000..1776578dc8 --- /dev/null +++ b/challenge-046/laurent-rosenfeld/raku/ch-2.p6 @@ -0,0 +1,14 @@ +use v6; +constant MAX = 50; +my @rooms = 1 xx MAX + 1; # (first employee) +my $start = 1; +for 2..MAX { + $start++; + my $door = $start; + while $door <= MAX { + @rooms[$door] = @rooms[$door] ?? 0 !! 1; + $door += $start; + } + # say [+] @rooms[1..MAX]; +} +say join " ", @rooms[1..MAX]; |
