diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-11-08 00:22:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-08 00:22:54 +0000 |
| commit | 2001053e2f21df07b80883b041bfbfcf85bcb35c (patch) | |
| tree | 26843aaacffdbc677bf50d336ceab02252955517 | |
| parent | f63e8184aded93da0a117d8ec555fc603c3c34cd (diff) | |
| parent | 3e71d013079068ed00d8e5eb5fef20f651343d25 (diff) | |
| download | perlweeklychallenge-club-2001053e2f21df07b80883b041bfbfcf85bcb35c.tar.gz perlweeklychallenge-club-2001053e2f21df07b80883b041bfbfcf85bcb35c.tar.bz2 perlweeklychallenge-club-2001053e2f21df07b80883b041bfbfcf85bcb35c.zip | |
Merge pull request #2702 from stuart-little/stuart-little_070-073
initial commit on challenges 070-073
| -rw-r--r-- | challenge-070/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-070/stuart-little/raku/ch-1.p6 | 10 | ||||
| -rwxr-xr-x | challenge-070/stuart-little/raku/ch-2.p6 | 11 | ||||
| -rw-r--r-- | challenge-071/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-071/stuart-little/raku/ch-1.p6 | 12 | ||||
| -rwxr-xr-x | challenge-071/stuart-little/raku/ch-2.p6 | 94 | ||||
| -rw-r--r-- | challenge-072/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-072/stuart-little/raku/ch-1.p6 | 11 | ||||
| -rwxr-xr-x | challenge-072/stuart-little/raku/ch-2.p6 | 10 | ||||
| -rw-r--r-- | challenge-073/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-073/stuart-little/raku/ch-1.p6 | 10 | ||||
| -rwxr-xr-x | challenge-073/stuart-little/raku/ch-2.p6 | 10 |
12 files changed, 172 insertions, 0 deletions
diff --git a/challenge-070/stuart-little/README b/challenge-070/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-070/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-070/stuart-little/raku/ch-1.p6 b/challenge-070/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..cbad4f9e32 --- /dev/null +++ b/challenge-070/stuart-little/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub swp(Str $s, Int $c, Int $o where { $c <= $o && $c+$o <= $s.chars }) { + $s.substr(0,1) ~ $s.substr(1+$o, $c) ~ $s.substr($c+1..$o) ~ $s.substr(1, $c) ~ $s.substr($c+$o+1) +} + +say swp(@*ARGS[0], |@*ARGS[1,2].map(*.Int) ); + +# run as <script> <string count offset> diff --git a/challenge-070/stuart-little/raku/ch-2.p6 b/challenge-070/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..ad6879fd38 --- /dev/null +++ b/challenge-070/stuart-little/raku/ch-2.p6 @@ -0,0 +1,11 @@ +#!/usr/bin/env perl6 +use v6; + +sub gray($n) { + ($n==1) && return <0 1>.List; + return (.map({ 0~$_}), .reverse.map({ 1~$_})).flat.List with gray($n-1); +} + +say gray(@*ARGS[0].Int).map({ :2($_)}); + +# run as <script> <size> diff --git a/challenge-071/stuart-little/README b/challenge-071/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-071/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-071/stuart-little/raku/ch-1.p6 b/challenge-071/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..d2899ea300 --- /dev/null +++ b/challenge-071/stuart-little/raku/ch-1.p6 @@ -0,0 +1,12 @@ +#!/usr/bin/env perl6 +use v6; + +sub pks(@a) { + @a.[@a.keys.grep({ (-Inf, |@a).[$_+1] > (-Inf, |@a).[$_,$_+2].max })] +} + +my @a=(1..50).pick(@*ARGS[0].Int); +say("Initial array: ", @a); +say("Peaks: ", pks(@a)); + +# run as <script> <size> diff --git a/challenge-071/stuart-little/raku/ch-2.p6 b/challenge-071/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..b8c961bfcf --- /dev/null +++ b/challenge-071/stuart-little/raku/ch-2.p6 @@ -0,0 +1,94 @@ +#!/usr/bin/env perl6 +use v6; + +class Node { + has Real $.val; + has Node $.nxt is rw; +} + +class Sll { + has Node $.head is rw; + + method show() { + my $node = self.head; + (! $node) && return; + while ($node.nxt) { + print $node.val, " -> "; + $node=$node.nxt; + } + say $node.val; + } + + method len() { + my $node = self.head; + my $len=0; + while ($node) { + $len++; + $node=$node.nxt; + } + return $len; + } + + multi method insert(Real $val) { + my $node=self.head; + (! $node) && do { + self.head=Node.new(val => $val); + return; + } + while ($node.nxt) { + $node=$node.nxt; + } + $node.nxt=Node.new(val => $val); + } + + multi method insert(0, Real $val) { + my $node=Node.new(val => $val, nxt => self.head); + self.head=$node; + } + + multi method insert(Int $idx where * > 0, Real $val) { + given self.len { + when 0 { self.insert(0,$val) } + when 1..$idx { self.insert($val) } + default { + my $cur=self.head; + my $node=Node.new(val => $val); + for (0..^($idx-1)) { + $cur=$cur.nxt; + } + $node.nxt=$cur.nxt; + $cur.nxt=$node; + } + } + } + + method del(Int $idx where * >= 0) { + given $idx { + when self.len..* { warn "Index out of range" } + when 0 { self.head=self.head.nxt } + default { + my $cur=self.head; + for (^($idx-1)) { + $cur=$cur.nxt; + } + $cur.nxt=$cur.nxt.nxt; + } + } + } +} + +my $ll=Sll.new(); +for (@*ARGS[1..*].map(*.Real)) { + $ll.insert($_); +} + +print "Initial list: "; +$ll.show(); + +my $N=@*ARGS[0].Int; +($N > $ll.len) ?? ($ll.del(0)) !! ($ll.del($ll.len-$N)); + +print "Chopped list: "; +$ll.show(); + +# run as <script> <number $N> <space-separated numbers making up the list> diff --git a/challenge-072/stuart-little/README b/challenge-072/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-072/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-072/stuart-little/raku/ch-1.p6 b/challenge-072/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..878a4eb283 --- /dev/null +++ b/challenge-072/stuart-little/raku/ch-1.p6 @@ -0,0 +1,11 @@ +#!/usr/bin/env perl6 +use v6; + +sub prime_pow_fact($p,$n) { + ($p, $p ** 2, $p ** 3 ...^ * > $n).map({ Int($n/$_) }).sum +} + +my $n=@*ARGS[0].Int; +say min(prime_pow_fact(2,$n),prime_pow_fact(5,$n)); + +# run as <script> <number> diff --git a/challenge-072/stuart-little/raku/ch-2.p6 b/challenge-072/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..c7b6575486 --- /dev/null +++ b/challenge-072/stuart-little/raku/ch-2.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub flns($l1, $l2, $flnm) { + $flnm.IO.lines[($l1-1,$l2-1).min..($l1-1,$l2-1).max].join("\n") +} + +say flns(|@*ARGS[0,1].map(*.Int), @*ARGS[2]); + +# run as <script> <two space-separated line numbers, in either order and then a filename> diff --git a/challenge-073/stuart-little/README b/challenge-073/stuart-little/README new file mode 100644 index 0000000000..76119cbbb8 --- /dev/null +++ b/challenge-073/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little. diff --git a/challenge-073/stuart-little/raku/ch-1.p6 b/challenge-073/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..9d10e184b6 --- /dev/null +++ b/challenge-073/stuart-little/raku/ch-1.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub slide($w, @a where @a >= $w) { + (0..@a-$w).map({ @a.[$_..^$_+$w].min }) +} + +say slide(@*ARGS[0].Int, @*ARGS[1..*].map(*.Int)); + +# run as <script> <window size> <space-separated array entries> diff --git a/challenge-073/stuart-little/raku/ch-2.p6 b/challenge-073/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..c417568372 --- /dev/null +++ b/challenge-073/stuart-little/raku/ch-2.p6 @@ -0,0 +1,10 @@ +#!/usr/bin/env perl6 +use v6; + +sub slide(@a) { + (0..^@a).map({ (@a.[0..$_].min < @a[$_]) ?? (@a[0..^$_].min) !! (0) }) +} + +say slide(@*ARGS.map(*.Int)); + +# run as <script> <space-separated array entries> |
