diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-08-06 20:35:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-06 20:35:29 +0100 |
| commit | e26dc5c4bdc22e99de7aa3032cd3320cb87f5848 (patch) | |
| tree | 492273420091b1ec89fbef73d29b3689a9ef3094 | |
| parent | 34346f8f78f8a432ef2835e90106ca1b7d64276b (diff) | |
| parent | 7f58610777109e3ef1dfd16b1ae6315a637587c8 (diff) | |
| download | perlweeklychallenge-club-e26dc5c4bdc22e99de7aa3032cd3320cb87f5848.tar.gz perlweeklychallenge-club-e26dc5c4bdc22e99de7aa3032cd3320cb87f5848.tar.bz2 perlweeklychallenge-club-e26dc5c4bdc22e99de7aa3032cd3320cb87f5848.zip | |
Merge pull request #8509 from polettix/polettix/pwc228
Add polettix's solution to challenge-228
| -rw-r--r-- | challenge-228/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-228/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-228/polettix/perl/ch-1.pl | 17 | ||||
| -rw-r--r-- | challenge-228/polettix/perl/ch-2.pl | 18 | ||||
| -rw-r--r-- | challenge-228/polettix/raku/ch-1.raku | 15 | ||||
| -rw-r--r-- | challenge-228/polettix/raku/ch-2.raku | 15 |
6 files changed, 67 insertions, 0 deletions
diff --git a/challenge-228/polettix/blog.txt b/challenge-228/polettix/blog.txt new file mode 100644 index 0000000000..e20d90244a --- /dev/null +++ b/challenge-228/polettix/blog.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2023/08/05/pwc228-unique-sum/ diff --git a/challenge-228/polettix/blog1.txt b/challenge-228/polettix/blog1.txt new file mode 100644 index 0000000000..d67c06909c --- /dev/null +++ b/challenge-228/polettix/blog1.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2023/08/06/pwc228-empty-array/ diff --git a/challenge-228/polettix/perl/ch-1.pl b/challenge-228/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..9d730d31b7 --- /dev/null +++ b/challenge-228/polettix/perl/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; + +say unique_sum(@ARGV); + +sub unique_sum (@ints) { + my $retval = 0; + my %seen; + for my $x (@ints) { + my $previous = $seen{$x}++ // 0; + $retval += $x unless $previous; + $retval -= $x if $previous == 1; + } + return $retval; +} diff --git a/challenge-228/polettix/perl/ch-2.pl b/challenge-228/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..0ac72c38c0 --- /dev/null +++ b/challenge-228/polettix/perl/ch-2.pl @@ -0,0 +1,18 @@ +#!/usr/bin/env perl +use v5.24; +use warnings; +use experimental 'signatures'; + +say empty_array(@ARGV); + +sub empty_array (@ints) { + my @sorted = sort { $a <=> $b } @ints; + my $n = 0; + while (@ints) { + my $item = shift @ints; + if ($item == $sorted[0]) { shift @sorted } + else { push @ints, $item } + ++$n; + } + return $n; +} diff --git a/challenge-228/polettix/raku/ch-1.raku b/challenge-228/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..c242352eff --- /dev/null +++ b/challenge-228/polettix/raku/ch-1.raku @@ -0,0 +1,15 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@args) { put unique-sum(@args) } + +sub unique-sum (@ints) { + my $retval = 0; + my $seen = BagHash.new; + for @ints -> $x { + given $seen{$x}++ { + $retval += $x when 0; + $retval -= $x when 1; + } + } + return $retval; +} diff --git a/challenge-228/polettix/raku/ch-2.raku b/challenge-228/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..1ea66d1c85 --- /dev/null +++ b/challenge-228/polettix/raku/ch-2.raku @@ -0,0 +1,15 @@ +#!/usr/bin/env raku +use v6; +sub MAIN (*@args) { put empty-array(@argsĀ».Int) } + +sub empty-array (@ints is copy) { + my @sorted = @ints.sort; + my $n = 0; + while @ints { + my $item = @ints.shift; + if $item == @sorted[0] { @sorted.shift } + else { @ints.push: $item } + ++$n; + } + return $n; +} |
