aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-191/feng-chang/raku/ch-1.raku6
-rwxr-xr-xchallenge-191/feng-chang/raku/ch-2.raku28
2 files changed, 34 insertions, 0 deletions
diff --git a/challenge-191/feng-chang/raku/ch-1.raku b/challenge-191/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..cfab573b2e
--- /dev/null
+++ b/challenge-191/feng-chang/raku/ch-1.raku
@@ -0,0 +1,6 @@
+#!/bin/env raku
+
+unit sub MAIN(*@N);
+
+my \m = @N.max;
+put @N.grep(!(* == m)).any * 2 > m ?? -1 !! 1;
diff --git a/challenge-191/feng-chang/raku/ch-2.raku b/challenge-191/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..7d6b0ae4b8
--- /dev/null
+++ b/challenge-191/feng-chang/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/bin/env raku
+
+unit sub MAIN(UInt:D \n where * > 0);
+
+sub solve(@S is copy, @s is copy) {
+ return 0 if +@S == 0;
+ return 0 if +@S.any == 0;
+
+ #return +@S[0] if +@S == 1;
+ if +@S == 1 {
+ put ' ', (|@s, |@S[0]).join(' ');
+ return +@S[0];
+ }
+
+ my \n = @S[0].shift;
+ my \cnt = solve(@S, @s);
+
+ @S.shift;
+ @S .= map({ $_.grep(!(* == n)).Array });
+ @s.push(n);
+
+ cnt + solve(@S, @s)
+}
+
+my @S = (1..n).map(-> \m { (1..n).grep({ m %% $_ or $_ %% m }).Array });
+put "candidates: {@S.gist}";
+
+put solve(@S, []);