diff options
| author | Ben Davies <kaiepi@outlook.com> | 2021-10-21 23:23:57 -0300 |
|---|---|---|
| committer | Ben Davies <kaiepi@outlook.com> | 2021-10-21 23:26:15 -0300 |
| commit | 334e93e8a7635b1f9116174446d9e46eb0e19021 (patch) | |
| tree | 5b17d5513e6f72e116ad06ec6a0311672a3b0777 | |
| parent | 953fa52e1b18d32137207c85a9274987a7dd7265 (diff) | |
| download | perlweeklychallenge-club-334e93e8a7635b1f9116174446d9e46eb0e19021.tar.gz perlweeklychallenge-club-334e93e8a7635b1f9116174446d9e46eb0e19021.tar.bz2 perlweeklychallenge-club-334e93e8a7635b1f9116174446d9e46eb0e19021.zip | |
Make Ben Davies' challenge 135 task 2 solution 2x as fast
| -rw-r--r-- | challenge-135/ben-davies/raku/ch-2.raku | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/challenge-135/ben-davies/raku/ch-2.raku b/challenge-135/ben-davies/raku/ch-2.raku index baf1c6d679..329f9e242d 100644 --- a/challenge-135/ben-davies/raku/ch-2.raku +++ b/challenge-135/ben-davies/raku/ch-2.raku @@ -1,9 +1,9 @@ use v6; +my token digit { <[ 0..9 ]> | <[ B C D F G H J K L M N P Q R S T V W X Y Z ]> } +my token check { <[ 0..9 ]> } unit sub MAIN(Str:D $sedol) { - my constant @digits = |(<0>..<9>), |<B C D F G H J K L M N P Q R S T V W X Y Z>; my constant @weights = <1 3 1 7 3 9 1>; - say +do - $sedol ~~ rx:r/ ^ <digit=@digits> ** 6 <check=[ 0..9 ]> $ / andthen + say +do $sedol ~~ rx:r/ ^ <digit> ** 6 <check> $ / andthen @<digit>.kv.map({ @weights[$^k] * :36(~$^v) }).sum andthen (10 - $_ % 10) % 10 == $<check>; } |
