diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-12-07 09:06:15 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-07 09:06:15 +0000 |
| commit | 439dce424454ec613bfc048d7a663d6c061684f1 (patch) | |
| tree | 430bd989c98b45ec93587628fd4f0d358ceb4f98 | |
| parent | 05ed7c67138bb2909dc1eb4fcb2a7c46bb087670 (diff) | |
| parent | d42edfdc9cf33f243dbac7ad257a865d96464445 (diff) | |
| download | perlweeklychallenge-club-439dce424454ec613bfc048d7a663d6c061684f1.tar.gz perlweeklychallenge-club-439dce424454ec613bfc048d7a663d6c061684f1.tar.bz2 perlweeklychallenge-club-439dce424454ec613bfc048d7a663d6c061684f1.zip | |
Merge pull request #7222 from polettix/polettix/pwc194
Add polettix's solution to challenge-194
| -rw-r--r-- | challenge-194/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-194/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-194/polettix/perl/ch-1.pl | 16 | ||||
| -rw-r--r-- | challenge-194/polettix/perl/ch-2.pl | 19 | ||||
| -rw-r--r-- | challenge-194/polettix/raku/ch-1.raku | 14 | ||||
| -rw-r--r-- | challenge-194/polettix/raku/ch-2.raku | 17 |
6 files changed, 68 insertions, 0 deletions
diff --git a/challenge-194/polettix/blog.txt b/challenge-194/polettix/blog.txt new file mode 100644 index 0000000000..c022d7aff5 --- /dev/null +++ b/challenge-194/polettix/blog.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/12/08/pwc194-digital-clock/ diff --git a/challenge-194/polettix/blog1.txt b/challenge-194/polettix/blog1.txt new file mode 100644 index 0000000000..a5ef682975 --- /dev/null +++ b/challenge-194/polettix/blog1.txt @@ -0,0 +1 @@ +https://etoobusy.polettix.it/2022/12/09/pwc194-frequency-equalizer/ diff --git a/challenge-194/polettix/perl/ch-1.pl b/challenge-194/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..02dc3ba8cf --- /dev/null +++ b/challenge-194/polettix/perl/ch-1.pl @@ -0,0 +1,16 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +@ARGV = qw< ?5:00 ?3:00 1?:00 2?:00 12:?5 12:5? > unless @ARGV; +say "$_ -> ", digital_clock($_) for @ARGV; + +sub digital_clock ($input) { + my $where = index($input, '?'); + return 9 if $where == 4; + return 5 if $where == 3; + return substr($input, 0, 1) == 2 ? 3 : 9 if $where == 1; + return substr($input, 1, 1) < 4 ? 2 : 1; +} diff --git a/challenge-194/polettix/perl/ch-2.pl b/challenge-194/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..d53359dc9b --- /dev/null +++ b/challenge-194/polettix/perl/ch-2.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; +no warnings 'experimental::signatures'; + +@ARGV = qw< abbc xyzyyxz xzxz > unless @ARGV; +say frequency_equalizer($_) . " -> $_" for @ARGV; + +sub frequency_equalizer ($string) { + my (%first_counter, %second_counter); + ++$first_counter{substr($string, $_, 1)} for 0 .. length($string) - 1; + ++$second_counter{$_} for values %first_counter; + return 0 if scalar(keys %second_counter) != 2; + my ($k1, $v1, $k2, $v2) = %second_counter; + ($k1, $v1, $k2, $v2) = ($k2, $v2, $k1, $v1) if $k1 > $k2; + return 1 if $v2 == 1 && $k2 - $k1 == 1; + return 0; +} diff --git a/challenge-194/polettix/raku/ch-1.raku b/challenge-194/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..d0fc075d7f --- /dev/null +++ b/challenge-194/polettix/raku/ch-1.raku @@ -0,0 +1,14 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@ARGV) { + @ARGV = < ?5:00 ?3:00 1?:00 2?:00 12:?5 12:5? > unless @ARGV; + put "$_ -> {digital-clock($_)}" for @ARGV; +} + +sub digital-clock ($input) { + my $where = $input.index('?'); + return 9 if $where == 4; + return 5 if $where == 3; + return $input.substr(0, 1) == 2 ?? 3 !! 9 if $where == 1; + return $input.substr(1, 1) < 4 ?? 2 !! 1; +} diff --git a/challenge-194/polettix/raku/ch-2.raku b/challenge-194/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..5dbf573bf4 --- /dev/null +++ b/challenge-194/polettix/raku/ch-2.raku @@ -0,0 +1,17 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@ARGV) { + @ARGV = < abbc xyzyyxz xzxz > unless @ARGV; + put "{frequency-equalizer($_)} -> $_" for @ARGV; +} + +sub frequency-equalizer ($string) { + my (%first_counter, %second_counter); + ++%first_counter{$string.substr($_, 1)} for ^$string.chars; + ++%second_counter{$_} for %first_counter.values; + return 0 if %second_counter.elems != 2; + my ($k1, $v1, $k2, $v2) = %second_counter.kv; + ($k1, $v1, $k2, $v2) = $k2, $v2, $k1, $v1 if $k1 > $k2; + return 1 if $v2 == 1 && $k2 - $k1 == 1; + return 0; +} |
