diff options
author | Matias Linares <matiaslina@gmail.com> | 2020-12-05 10:48:05 -0300 |
---|---|---|
committer | Matias Linares <matiaslina@gmail.com> | 2020-12-05 10:48:05 -0300 |
commit | 5fa17cd54a1170449a91da48a2fe88a99349daa2 (patch) | |
tree | 0391332b9c01645f1c0196ba00e9bcb949495426 /2020/day1.raku | |
download | advent-of-code-5fa17cd54a1170449a91da48a2fe88a99349daa2.tar.gz |
Add 2020
Diffstat (limited to '2020/day1.raku')
-rw-r--r-- | 2020/day1.raku | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/2020/day1.raku b/2020/day1.raku new file mode 100644 index 0000000..b932fa5 --- /dev/null +++ b/2020/day1.raku @@ -0,0 +1,32 @@ +``` +#!/usr/bin/env raku +use v6; + +sub find-entries(@lines, Int :$entries = 2) { + @lines.combinations($entries).first(*.sum == 2020) +} + +sub total-multiplied(@lines, Int :$entries = 2) { + return [*] $_ with find-entries(@lines, :$entries); +} + +multi sub MAIN(Str $filename where *.IO.f, :$entries = 2) { + say total-multiplied($filename.IO.lines, :$entries); +} + +# Run tests with `raku --doc -c day1.raku` +multi sub MAIN('test') { + use Test; + my @input = 1721, 979, 366, 299, 675, 1456; + + subtest '1.a', { + is find-entries(@input), (1721, 299), 'find-entries'; + is total-multiplied(@input), 514579, 'Example'; + } + subtest '1.b', { + is find-entries(@input, :3entries), (979, 366, 675), 'Entries'; + is total-multiplied(@input, :3entries), 241861950, 'Example'; + } + done-testing; +} +``` |