diff options
| -rwxr-xr-x | challenge-191/feng-chang/raku/ch-1.raku | 6 | ||||
| -rwxr-xr-x | challenge-191/feng-chang/raku/ch-2.raku | 28 |
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, []); |
