aboutsummaryrefslogtreecommitdiff
path: root/challenge-080
diff options
context:
space:
mode:
authorKang-min Liu <gugod@gugod.org>2020-09-28 23:59:32 +0900
committerKang-min Liu <gugod@gugod.org>2020-09-28 23:59:32 +0900
commit10c36422e9166389bfb25e96f27922e0accbecb4 (patch)
treeaafe9dbedca9bc92bec3b9868559114049b76d26 /challenge-080
parentaa14cbf8342e04b936f40bcc720a23a258137ecd (diff)
downloadperlweeklychallenge-club-10c36422e9166389bfb25e96f27922e0accbecb4.tar.gz
perlweeklychallenge-club-10c36422e9166389bfb25e96f27922e0accbecb4.tar.bz2
perlweeklychallenge-club-10c36422e9166389bfb25e96f27922e0accbecb4.zip
solutions of PWC 080 from gugod in Perl, Raku, and Kotlin.
Diffstat (limited to 'challenge-080')
-rwxr-xr-xchallenge-080/gugod/kotlin/ch-1.kts14
-rw-r--r--challenge-080/gugod/kotlin/ch-2.kts12
-rw-r--r--challenge-080/gugod/perl/ch-1.pl20
-rw-r--r--challenge-080/gugod/perl/ch-2.pl15
-rw-r--r--challenge-080/gugod/raku/ch-1.raku9
-rw-r--r--challenge-080/gugod/raku/ch-2.raku11
6 files changed, 81 insertions, 0 deletions
diff --git a/challenge-080/gugod/kotlin/ch-1.kts b/challenge-080/gugod/kotlin/ch-1.kts
new file mode 100755
index 0000000000..3d645acfb2
--- /dev/null
+++ b/challenge-080/gugod/kotlin/ch-1.kts
@@ -0,0 +1,14 @@
+#!/usr/bin/env kotlinc -script
+
+// Usage:
+// kotlinc -script ./challenge-080/gugod/kotlin/ch-1.kts -- 1 2 18 4 5
+// 3
+//
+// ./ch-1.kts -- 7 1 2 -3 3 4 50 '-1' '-2'
+// 5
+
+
+val N = args.map({ it.toIntOrNull() }).filter({ it != null });
+val seen = N.toSet();
+val x = (1..N.size+1).first({ ! seen.contains(it) });
+println(x);
diff --git a/challenge-080/gugod/kotlin/ch-2.kts b/challenge-080/gugod/kotlin/ch-2.kts
new file mode 100644
index 0000000000..7c5af14b2b
--- /dev/null
+++ b/challenge-080/gugod/kotlin/ch-2.kts
@@ -0,0 +1,12 @@
+#!/usr/bin/env kotlinc -script
+
+// Usage:
+//
+// # kotlinc -script ./challenge-080/gugod/kotlin/ch-2.kts 1 4 3 2
+// 7
+
+val N = args.map({ it.toIntOrNull() }).filter({ it != null });
+
+val extra = (1..N.lastIndex).filter({ N[it] != N[it-1] }).size;
+
+println( N.size + extra );
diff --git a/challenge-080/gugod/perl/ch-1.pl b/challenge-080/gugod/perl/ch-1.pl
new file mode 100644
index 0000000000..fcc13cd0c2
--- /dev/null
+++ b/challenge-080/gugod/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+use v5.28;
+
+=head1 Usage
+
+ # perl ./challenge-080/gugod/perl/ch-1.pl 5 2 -2 0
+ 1
+
+ # perl ./challenge-080/gugod/perl/ch-1.pl 5 2 -2 0 1
+ 3
+
+=cut
+
+my @N = grep { $_ > 0 } map { int($_) } @ARGV;
+
+my %seen = map { $_ => 1 } @N;
+my $i = 1;
+$i++ while $seen{$i};
+
+say $i;
diff --git a/challenge-080/gugod/perl/ch-2.pl b/challenge-080/gugod/perl/ch-2.pl
new file mode 100644
index 0000000000..61f0e90073
--- /dev/null
+++ b/challenge-080/gugod/perl/ch-2.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use v5.28;
+
+=head1 Usage
+
+ # perl ./challenge-080/gugod/perl/ch-2.pl 1 4 3 2
+ 7
+
+=cut
+
+my @N = grep { $_ > 0 } map { int($_) } @ARGV;
+
+my @extra = grep { @N[$_] != @N[$_-1] } (1..@N-1);
+
+say @N + @extra;
diff --git a/challenge-080/gugod/raku/ch-1.raku b/challenge-080/gugod/raku/ch-1.raku
new file mode 100644
index 0000000000..598aaca113
--- /dev/null
+++ b/challenge-080/gugod/raku/ch-1.raku
@@ -0,0 +1,9 @@
+#!/usr/bin/env raku
+
+# Usage:
+# raku ./challenge-080/gugod/raku/ch-1.raku 1 2 18 4 5
+# 3
+
+my $N = @*ARGS.map({ .Int }).Set();
+
+(1..*).first(-> $n { ! $N{$n} }).say;
diff --git a/challenge-080/gugod/raku/ch-2.raku b/challenge-080/gugod/raku/ch-2.raku
new file mode 100644
index 0000000000..5afbd6afd1
--- /dev/null
+++ b/challenge-080/gugod/raku/ch-2.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+
+# Usage:
+# raku ./challenge-080/gugod/raku/ch-2.raku 1 4 3 2
+# 7
+
+my @N = @*ARGS.map({ .Int });
+
+my $extra = (1..@N.end).grep(-> $i { @N[$i] != @N[$i-1] }).elems;
+
+say @N.elems + $extra;