From 84e0e9d9e382344e36103c36cb9b47137a75e7d3 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Thu, 14 Dec 2017 17:24:52 +0100 Subject: day13 --- day13 | 44 ++++++++++++++++++++++++++++++++++++++++++++ day13.cc | 30 ++++++++++++++++++++++++++++++ day13.k | 4 ++++ 3 files changed, 78 insertions(+) create mode 100644 day13 create mode 100644 day13.cc create mode 100644 day13.k diff --git a/day13 b/day13 new file mode 100644 index 0000000..701ff7f --- /dev/null +++ b/day13 @@ -0,0 +1,44 @@ +0: 3 +1: 2 +2: 6 +4: 4 +6: 4 +8: 10 +10: 6 +12: 8 +14: 5 +16: 6 +18: 8 +20: 8 +22: 12 +24: 6 +26: 9 +28: 8 +30: 8 +32: 10 +34: 12 +36: 12 +38: 8 +40: 12 +42: 12 +44: 14 +46: 12 +48: 12 +50: 12 +52: 12 +54: 14 +56: 14 +58: 14 +60: 12 +62: 14 +64: 14 +66: 17 +68: 14 +72: 18 +74: 14 +76: 20 +78: 14 +82: 18 +86: 14 +90: 18 +92: 14 diff --git a/day13.cc b/day13.cc new file mode 100644 index 0000000..91fb5c6 --- /dev/null +++ b/day13.cc @@ -0,0 +1,30 @@ +#include +#include +#include +#include +#include + +using namespace std; +using namespace std::placeholders; + +struct scanner { + int d, r; + bool hit(int delay=0) { return (d + delay) % (2*r - 2) == 0; } + operator int() { return hit() ? d * r : 0; } +}; + +int main() +{ + vector ss; + char _; + for (int d, r; cin >> d >> _ >> r; ) + ss.push_back({d, r}); + + cout << std::accumulate(begin(ss), end(ss), 0) << endl; + + for (int d = 0; ; d++) + if (none_of(ss.begin(), ss.end(), bind(&scanner::hit, _1, d))) { + cout << d << endl; + break; + } +} diff --git a/day13.k b/day13.k new file mode 100644 index 0000000..8f0aacf --- /dev/null +++ b/day13.k @@ -0,0 +1,4 @@ +n:.-2+2*m:!/.:''+":"\'0:`day13 + ++/s*m@s:k@&0=n!'k:!m / 3184 +{~*/n!'x+k}(1+)/1 / 3878062, slow -- cgit 1.4.1