From 5fa17cd54a1170449a91da48a2fe88a99349daa2 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sat, 5 Dec 2020 10:48:05 -0300 Subject: Add 2020 --- 2020/day1.raku | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 2020/day1.raku (limited to '2020/day1.raku') 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; +} +``` -- cgit v1.2.3-70-g09d2