summaryrefslogtreecommitdiff
path: root/2023
diff options
context:
space:
mode:
authornekineki <nekineki@nekineki.net>2023-12-06 07:03:16 +0100
committernekineki <nekineki@nekineki.net>2023-12-06 07:03:16 +0100
commit293f08fcda4f822bed35bb06f81534d89faf230c (patch)
tree2867e2c698b3c3784c191a3d8c3282325622cd49 /2023
parent1de6fa0b6ae0ef0279df7640683173aa15743646 (diff)
day06
Diffstat (limited to '2023')
-rw-r--r--2023/day06.rs62
-rw-r--r--2023/in/day06.pzl2
-rw-r--r--2023/in/day06.ref2
3 files changed, 66 insertions, 0 deletions
diff --git a/2023/day06.rs b/2023/day06.rs
new file mode 100644
index 0000000..7ba165e
--- /dev/null
+++ b/2023/day06.rs
@@ -0,0 +1,62 @@
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_mut)]
+use std::fs::File;
+use std::io::Read;
+
+fn get_opts(t: u64, d: u64) -> u64 {
+ let mut opts = 0;
+ for wait in 0..t {
+ if wait * (t - wait) > d {
+ opts += 1;
+ }
+ }
+ return opts;
+}
+
+fn main() {
+ // let filename = "in/day06.ref";
+ let filename = "in/day06.pzl";
+
+ let mut f = File::open(filename).expect("cannot open file");
+ let mut content = String::new();
+ f.read_to_string(&mut content).expect("cannot read file");
+
+ let mut lines = content.trim_end().split('\n');
+ let parse1 = |l: &str| {
+ l.split_once(":")
+ .unwrap()
+ .1
+ .split(" ")
+ .filter_map(|x| x.parse::<u64>().ok())
+ .collect::<Vec<u64>>()
+ };
+ let time = parse1(lines.next().unwrap());
+ let dist = parse1(lines.next().unwrap());
+ let res1 = time
+ .into_iter()
+ .zip(dist.into_iter())
+ .map(|(t, d)| get_opts(t, d))
+ .fold(1, |acc, x| acc * x);
+
+ let mut lines = content.trim_end().split('\n');
+ let parse1 = |l: &str| {
+ l.split_once(":")
+ .unwrap()
+ .1
+ .split(" ")
+ .filter(|s| !s.is_empty())
+ .collect::<Vec<_>>()
+ .join("")
+ .parse::<u64>()
+ .unwrap()
+ };
+ let time = parse1(lines.next().unwrap());
+ let dist = parse1(lines.next().unwrap());
+ let res2 = get_opts(time, dist);
+
+ println!("res1: {}", res1);
+ println!("res2: {}", res2);
+ assert_eq!(res1, 220320);
+ assert_eq!(res2, 34454850);
+}
diff --git a/2023/in/day06.pzl b/2023/in/day06.pzl
new file mode 100644
index 0000000..01c2b63
--- /dev/null
+++ b/2023/in/day06.pzl
@@ -0,0 +1,2 @@
+Time: 59 79 65 75
+Distance: 597 1234 1032 1328
diff --git a/2023/in/day06.ref b/2023/in/day06.ref
new file mode 100644
index 0000000..28f5ae9
--- /dev/null
+++ b/2023/in/day06.ref
@@ -0,0 +1,2 @@
+Time: 7 15 30
+Distance: 9 40 200