summary refs log tree commit diff homepage
path: root/2017/src/bin/day15.rs
diff options
context:
space:
mode:
Diffstat (limited to '2017/src/bin/day15.rs')
-rw-r--r--2017/src/bin/day15.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/2017/src/bin/day15.rs b/2017/src/bin/day15.rs
new file mode 100644
index 0000000..dbf041a
--- /dev/null
+++ b/2017/src/bin/day15.rs
@@ -0,0 +1,49 @@
+use std::io::{self, Read};
+
+struct GenA(u64);
+
+impl Iterator for GenA {
+    type Item = u64;
+
+    fn next(&mut self) -> Option<u64> {
+        self.0 = self.0.wrapping_mul(16807) % 2147483647;
+        Some(self.0)
+    }
+}
+
+struct GenB(u64);
+
+impl Iterator for GenB {
+    type Item = u64;
+
+    fn next(&mut self) -> Option<u64> {
+        self.0 = self.0.wrapping_mul(48271) % 2147483647;
+        Some(self.0)
+    }
+}
+
+fn judge(a: u64, b: u64) -> usize {
+    GenA(a).zip(GenB(b))
+        .take(40_000_000)
+        .filter(|&(a, b)| a & 0xFFFF == b & 0xFFFF)
+        .count()
+}
+
+fn solve1(input: &str) -> usize {
+    let mut iter = input.split_whitespace();
+    let a = iter.clone().nth(4).unwrap().parse().unwrap();
+    let b = iter.nth(9).unwrap().parse().unwrap();
+    judge(a, b)
+}
+
+fn main() {
+    let mut input = String::new();
+    io::stdin().read_to_string(&mut input).unwrap();
+
+    println!("Part 1: {}", solve1(input.trim()));
+}
+
+#[test]
+fn part1() {
+    assert_eq!(588, judge(65, 8921));
+}
'logsubject'>Rewrite install script yet againJune McEnroe 2020-09-11Remove NetBSD from install scriptJune McEnroe I never use it. 2020-09-11Use MacPorts rather than pkgsrcJune McEnroe My system is probably such a mess now... 2020-09-11Add debian VM name to sshJune McEnroe 2020-09-11Add influencer tweetJune McEnroe 2020-09-10Add The Kingdom of GodsJune McEnroe Reading has really slowed down :( 2020-09-07Add SunglassesJune McEnroe An IRC find. 2020-09-06Add Between the BreathsJune McEnroe One of those good songs from a soundtrack of a film that probably isn't? The summary sounds a lot more interesting than the title implies, at least. 2020-09-04Open /dev/tty in nudgeJune McEnroe This makes it work even when it's run connected to a pipe, i.e. as the notify command of catgirl... 2020-09-04Add nudgeJune McEnroe 2020-09-03Build fbclock with -lzJune McEnroe I guess this got lost somewhere, long ago... 2020-08-29Add tweets from retweetsJune McEnroe