aboutsummaryrefslogtreecommitdiff
path: root/2020/day1.raku
diff options
context:
space:
mode:
Diffstat (limited to '2020/day1.raku')
-rw-r--r--2020/day1.raku32
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;
+}
+```