From 10c36422e9166389bfb25e96f27922e0accbecb4 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Mon, 28 Sep 2020 23:59:32 +0900 Subject: solutions of PWC 080 from gugod in Perl, Raku, and Kotlin. --- challenge-080/gugod/kotlin/ch-1.kts | 14 ++++++++++++++ challenge-080/gugod/kotlin/ch-2.kts | 12 ++++++++++++ challenge-080/gugod/perl/ch-1.pl | 20 ++++++++++++++++++++ challenge-080/gugod/perl/ch-2.pl | 15 +++++++++++++++ challenge-080/gugod/raku/ch-1.raku | 9 +++++++++ challenge-080/gugod/raku/ch-2.raku | 11 +++++++++++ 6 files changed, 81 insertions(+) create mode 100755 challenge-080/gugod/kotlin/ch-1.kts create mode 100644 challenge-080/gugod/kotlin/ch-2.kts create mode 100644 challenge-080/gugod/perl/ch-1.pl create mode 100644 challenge-080/gugod/perl/ch-2.pl create mode 100644 challenge-080/gugod/raku/ch-1.raku create mode 100644 challenge-080/gugod/raku/ch-2.raku 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; -- cgit