aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2021-11-22 19:38:39 +0800
committer冯昶 <seaker@qq.com>2021-11-22 19:38:39 +0800
commit3601ca3aa16b14a9bd81294925e293a12d4baf98 (patch)
treee644c0836bf507279b8e9c7359bda4f5f1840824
parent07920c7e42c86f095d3878425b189a65323bf765 (diff)
downloadperlweeklychallenge-club-3601ca3aa16b14a9bd81294925e293a12d4baf98.tar.gz
perlweeklychallenge-club-3601ca3aa16b14a9bd81294925e293a12d4baf98.tar.bz2
perlweeklychallenge-club-3601ca3aa16b14a9bd81294925e293a12d4baf98.zip
Challenge #140, Raku solutions
-rwxr-xr-xchallenge-140/feng-chang/raku/ch-1.raku33
-rwxr-xr-xchallenge-140/feng-chang/raku/ch-2.raku5
2 files changed, 38 insertions, 0 deletions
diff --git a/challenge-140/feng-chang/raku/ch-1.raku b/challenge-140/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..38e4cf77a0
--- /dev/null
+++ b/challenge-140/feng-chang/raku/ch-1.raku
@@ -0,0 +1,33 @@
+#!/bin/env raku
+
+multi infix:<加>([], $B) { $B }
+
+multi infix:<加>($A, [0]) { $A }
+
+multi infix:<加>($A, [1]) {
+ my Array $C = $A;
+
+ if $C[*-1] == 0 {
+ $C.splice(*-1, 1, 1);
+ } else {
+ $C.pop;
+ $C 加= [1];
+ $C.push(0);
+ }
+
+ $C
+}
+
+multi infix:<加>($A, $B) {
+ my Array $C = $A.elems ≥ $B.elems - 1 ?? $A[^($A.elems - $B.elems + 1)].Array !! [];
+ for $B.elems ... 1 -> $i {
+ $C 加= [$B[$B.elems - $i]];
+ $C.push(0 ≤ $A.elems - $i + 1 < $A.elems ?? $A[$A.elems - $i + 1] !! 0) if $i > 1;
+ }
+
+ $C
+}
+
+sub MAIN(UInt:D $a, UInt:D $b) {
+ put ($a.comb».UInt.Array 加 $b.comb».UInt.Array).join;
+}
diff --git a/challenge-140/feng-chang/raku/ch-2.raku b/challenge-140/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..46859edc96
--- /dev/null
+++ b/challenge-140/feng-chang/raku/ch-2.raku
@@ -0,0 +1,5 @@
+#!/bin/env raku
+
+sub MAIN(UInt:D \i, UInt:D \j, UInt:D \k) {
+ put ((1..i)X(1..j)).map({.[0]*.[1]}).sort[k-1];
+}