diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-01-13 13:25:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-13 13:25:55 +0000 |
| commit | e9d26196d376052866b0c8180a7ccb7e91587345 (patch) | |
| tree | 679caa47bc77cd73dfc79d29882a15e9caf9c061 | |
| parent | d4bf6f609d2714b3862f693c2eafbc7744241ffb (diff) | |
| parent | c79525030ea6d637b206d2825ed85e3a8255f14b (diff) | |
| download | perlweeklychallenge-club-e9d26196d376052866b0c8180a7ccb7e91587345.tar.gz perlweeklychallenge-club-e9d26196d376052866b0c8180a7ccb7e91587345.tar.bz2 perlweeklychallenge-club-e9d26196d376052866b0c8180a7ccb7e91587345.zip | |
Merge pull request #1133 from Scimon/master
The challenge description was a bit vague but I think I've solved it
| -rw-r--r-- | challenge-043/simon-proctor/raku/ch-1.p6 | 50 | ||||
| -rw-r--r-- | challenge-043/simon-proctor/raku/ch-2.p6 | 20 |
2 files changed, 70 insertions, 0 deletions
diff --git a/challenge-043/simon-proctor/raku/ch-1.p6 b/challenge-043/simon-proctor/raku/ch-1.p6 new file mode 100644 index 0000000000..8e5d3da233 --- /dev/null +++ b/challenge-043/simon-proctor/raku/ch-1.p6 @@ -0,0 +1,50 @@ +#!/usr/bin/env perl6 + +use v6; + +# I'm not 100% sure what the task is asking for I think it's about using the Rings as sets so you can put numbers in the intersections. +# (Note after running it I've found a solution with 1 number per set / intersection. So the code is based on this. + +# First up define the available areas +sub reset-sets () { + { + blue => 8, yellow => 7, black => 0, green => 5, red => 9, + blue_yellow => 0, yellow_black => 0, black_green => 0, green_red => 0 + }; +} + +my %sets = reset-sets(); + +# Now define subs to calculate the totals for each set +sub set-sum(%sets,@keys) { + return sub () { + [+] |%sets{@keys}; + } +} +my &blue = set-sum(%sets,<<blue blue_yellow>>); +my &yellow = set-sum(%sets,<<blue_yellow yellow yellow_black>>); +my &black = set-sum(%sets,<<yellow_black black black_green>>); +my &green = set-sum(%sets,<<black_green green green_red>>); +my &red = set-sum(%sets,<<green_red red>>); + +my &complete = sub () { so blue() & yellow() & black() & green() & red() == 11 } + +say "Before"; +say "Current Sets {%sets.perl} : Totals : Blue {blue()} : Yellow {yellow() } : Black {black()} : Green {green()} : Red {red()} : Complete? {complete()}"; + +my @options = [1,2,3,4,6]; + +# First attempt, 1 number per pot. +for @options.permutations -> @possible { + %sets = reset-sets(); + %sets<<black blue_yellow yellow_black black_green green_red>> = @possible; + if ( complete() ) { + say "Solution"; + say "Current Sets {%sets.perl} : Totals : Blue {blue()} : Yellow {yellow() } : Black {black()} : Green {green()} : Red {red()} : Complete? {complete()}"; + exit; + } +} + +say "Going to need to try something else"; + + diff --git a/challenge-043/simon-proctor/raku/ch-2.p6 b/challenge-043/simon-proctor/raku/ch-2.p6 new file mode 100644 index 0000000000..3cd3eb2a05 --- /dev/null +++ b/challenge-043/simon-proctor/raku/ch-2.p6 @@ -0,0 +1,20 @@ +#!/usr/bin/enb perl6 + +use v6; + +#| Calculate the self desscriptive number for the given base +sub MAIN( UInt \base where 1 <= * <= 36 ) { + say calculate( base ); +} + +# No number available for these bases +multi calculate( \base where * ~~ 1|2|3|6 ) { + "No self descriptive number for base {base}"; +} + +multi calculate(4) { "Either 1210 or 2020" } +multi calculate(5) { "21200" } + +multi calculate(\base) { + ((base-4)*(base**(base-1))+(2*(base**(base-2)))+(base**(base-3))+(base**3)).base(base); +} |
