diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-09-29 07:19:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-29 07:19:49 +0100 |
| commit | 167dafe07993a9f107ea23ceef6f21d94b4fe70c (patch) | |
| tree | 920e31f4cc4e1ecd332160e69b0d53a973b6a256 | |
| parent | 4e1b4cac8568d80f0a20b729a87d55a3bfe86a3b (diff) | |
| parent | 5641718a10d6828f2b22e6c256f8487156cdd0a0 (diff) | |
| download | perlweeklychallenge-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-x | challenge-080/shawn-wagner/perl/ch1.pl | 18 | ||||
| -rwxr-xr-x | challenge-080/shawn-wagner/perl/ch2.pl | 18 | ||||
| -rwxr-xr-x | challenge-080/shawn-wagner/tcl/ch1.tcl | 20 | ||||
| -rwxr-xr-x | challenge-080/shawn-wagner/tcl/ch2.tcl | 19 |
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 |
