aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-08-06 20:35:29 +0100
committerGitHub <noreply@github.com>2023-08-06 20:35:29 +0100
commite26dc5c4bdc22e99de7aa3032cd3320cb87f5848 (patch)
tree492273420091b1ec89fbef73d29b3689a9ef3094
parent34346f8f78f8a432ef2835e90106ca1b7d64276b (diff)
parent7f58610777109e3ef1dfd16b1ae6315a637587c8 (diff)
downloadperlweeklychallenge-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.txt1
-rw-r--r--challenge-228/polettix/blog1.txt1
-rw-r--r--challenge-228/polettix/perl/ch-1.pl17
-rw-r--r--challenge-228/polettix/perl/ch-2.pl18
-rw-r--r--challenge-228/polettix/raku/ch-1.raku15
-rw-r--r--challenge-228/polettix/raku/ch-2.raku15
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;
+}