aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-29 07:19:49 +0100
committerGitHub <noreply@github.com>2020-09-29 07:19:49 +0100
commit167dafe07993a9f107ea23ceef6f21d94b4fe70c (patch)
tree920e31f4cc4e1ecd332160e69b0d53a973b6a256
parent4e1b4cac8568d80f0a20b729a87d55a3bfe86a3b (diff)
parent5641718a10d6828f2b22e6c256f8487156cdd0a0 (diff)
downloadperlweeklychallenge-club-167dafe07993a9f107ea23ceef6f21d94b4fe70c.tar.gz
perlweeklychallenge-club-167dafe07993a9f107ea23ceef6f21d94b4fe70c.tar.bz2
perlweeklychallenge-club-167dafe07993a9f107ea23ceef6f21d94b4fe70c.zip
Merge pull request #2405 from shawnw/challenge-080-solution
Challenge 080 solution
-rwxr-xr-xchallenge-080/shawn-wagner/perl/ch1.pl18
-rwxr-xr-xchallenge-080/shawn-wagner/perl/ch2.pl18
-rwxr-xr-xchallenge-080/shawn-wagner/tcl/ch1.tcl20
-rwxr-xr-xchallenge-080/shawn-wagner/tcl/ch2.tcl19
4 files changed, 75 insertions, 0 deletions
diff --git a/challenge-080/shawn-wagner/perl/ch1.pl b/challenge-080/shawn-wagner/perl/ch1.pl
new file mode 100755
index 0000000000..73e21f0063
--- /dev/null
+++ b/challenge-080/shawn-wagner/perl/ch1.pl
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl
+use warnings;
+use strict;
+use feature qw/say/;
+
+sub task1 {
+ my %nums = map { $_ => 1 } @_;
+ for (my $n = 1; ; $n += 1) {
+ if (!exists $nums{$n}) {
+ say $n;
+ return;
+ }
+ }
+}
+
+task1 5, 2, -2, 0;
+task1 1, 8, -1;
+task1 2, 0, -1;
diff --git a/challenge-080/shawn-wagner/perl/ch2.pl b/challenge-080/shawn-wagner/perl/ch2.pl
new file mode 100755
index 0000000000..446fc708cb
--- /dev/null
+++ b/challenge-080/shawn-wagner/perl/ch2.pl
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl
+use warnings;
+use strict;
+use feature qw/say/;
+
+sub task2 {
+ my $candies = @_;
+ for (my $n = 0; $n <= $#_; $n += 1) {
+ if (($n > 0 && $_[$n] > $_[$n - 1]) ||
+ ($n < $#_ && $_[$n] > $_[$n + 1])) {
+ $candies += 1;
+ }
+ }
+ say $candies;
+}
+
+task2 1, 2, 2;
+task2 1, 4, 3, 2;
diff --git a/challenge-080/shawn-wagner/tcl/ch1.tcl b/challenge-080/shawn-wagner/tcl/ch1.tcl
new file mode 100755
index 0000000000..df578d5e42
--- /dev/null
+++ b/challenge-080/shawn-wagner/tcl/ch1.tcl
@@ -0,0 +1,20 @@
+#!/usr/bin/env tclsh
+
+# Perl one used hashes, so let's take a different approach in the tcl
+# solution; a sorted list.
+
+proc task1 args {
+ set N [lsort -integer [lmap n $args { if {$n <= 0} { continue }; set n }]]
+ set i 1
+ set n 0
+ set len [llength $N]
+ while {$n < $len && $i == [lindex $N $n]} {
+ incr n
+ incr i
+ }
+ puts $i;
+}
+
+task1 5 2 -2 0
+task1 1 8 -1
+task1 2 0 -1
diff --git a/challenge-080/shawn-wagner/tcl/ch2.tcl b/challenge-080/shawn-wagner/tcl/ch2.tcl
new file mode 100755
index 0000000000..0f4837d31f
--- /dev/null
+++ b/challenge-080/shawn-wagner/tcl/ch2.tcl
@@ -0,0 +1,19 @@
+#!/usr/bin/env tclsh
+
+# Same approach as the perl solution
+
+proc task2 args {
+ set candies [llength $args]
+ set len $candies
+ for {set n 0} {$n < $len} {incr n} {
+ if {($n > 0 && [lindex $args $n] > [lindex $args $n-1]) ||
+ ($n < $len - 1 && [lindex $args $n] > [lindex $args $n+1])} {
+ incr candies
+ }
+ }
+ puts $candies
+}
+
+
+task2 1 2 2
+task2 1 4 3 2