From 074b1f40b038f9f2462168960210e2e2c150b986 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sun, 24 Dec 2017 10:59:42 -0500 Subject: Day 15 --- 2017/src/bin/day15.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 2017/src/bin/day15.rs (limited to '2017/src/bin') 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 { + 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 { + 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)); +} -- cgit 1.4.1 8'/>
Commit message (Expand)Author
2021-02-09Add ~/.local/share/man to MANPATHJune McEnroe
2021-02-09Fix adding /usr/games to PATHJune McEnroe
2021-02-09Show battery level while charging, time while dischargingJune McEnroe
2021-02-09Install sctJune McEnroe
2021-02-09Show minutes left instead of battery percentageJune McEnroe
2021-02-09Set antialiasing and unhinting globallyJune McEnroe
2021-02-09Open youtube and twitch with mpvJune McEnroe
2021-02-09Add volume control bindings to cwmJune McEnroe
2021-02-09Use w3m to open other URLsJune McEnroe
2021-02-09Disable mouse mode in xtermJune McEnroe
2021-02-09Add pbcopy, pbpaste, open dispatch scriptsJune McEnroe
2021-02-09Use flags for pbd client behaviourJune McEnroe
2021-02-08Add macOS-like copy and paste to xtermJune McEnroe
2021-02-08Only update clock script every minuteJune McEnroe
2021-02-08Use 4M- for window resizing in cwmJune McEnroe
2021-02-08Tweak trackpad scaling, mouse accelerationJune McEnroe
2021-02-08Use xsel in up and add it do install.shJune McEnroe
2021-02-07Swap root window coloursJune McEnroe
2021-02-07Add -X flag to install X stuff on OpenBSDJune McEnroe
2021-02-07Adjust brightness by smaller incrementsJune McEnroe
2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe
2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe
2021-02-07Add simple battery status and clock to xsessionJune McEnroe
2021-02-07Set cursor theme and sizeJune McEnroe
2021-02-07Use scrot for up -s if no screencaptureJune McEnroe
2021-02-07Enable mouse acceleration in XJune McEnroe
2021-02-07Set colours for Xt and cwmJune McEnroe
2021-02-07Set urgency on bell in xtermJune McEnroe
2021-02-07Add bindings for brightness controlJune McEnroe
2021-02-07Set X key repeat rateJune McEnroe
2021-02-07Bump font size to 12June McEnroe
2021-02-07Fully configure and rebind cwmJune McEnroe
2021-02-07Add BintiJune McEnroe
2021-02-07Finish configuring xtermJune McEnroe
2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe
2021-02-06Set root window to black on purple snowJune McEnroe
2021-02-06Add xmodmap configurationJune McEnroe
2021-02-06Add initial OpenBSD X configurationJune McEnroe
2021-02-06Add xterm output to schemeJune McEnroe