Day 1: Secret Entrance
Megathread guidelines
- Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
- You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL
FAQ
- What is this?: Here is a post with a large amount of details: https://programming.dev/post/6637268
- Where do I participate?: https://adventofcode.com/
- Is there a leaderboard for the community?: We have a programming.dev leaderboard with the info on how to join in this post: https://programming.dev/post/6631465


Rust
Almost missed, that “the dial starts by pointing at 50”.
View on github
const N: i32 = 100; fn parse_line(l: &str) -> (i32, i32) { let dir = match l.chars().next().unwrap() { 'L' => -1, 'R' => 1, _ => panic!(), }; let dist = l[1..].parse::<i32>().unwrap(); (dir, dist) } fn part1(input: String) { let mut pos = 50; let mut count0 = 0; for l in input.lines() { let (dir, dist) = parse_line(l); pos = (pos + dir * dist) % N; if pos == 0 { count0 += 1; } } println!("{count0}"); } fn part2(input: String) { let mut pos = 50; let mut count0 = 0; for l in input.lines() { let (dir, dist) = parse_line(l); if dir == 1 { count0 += (pos + dist) / N; } else { count0 += ((N - pos) % N + dist) / N; } pos = (pos + dir * dist).rem_euclid(N); } println!("{count0}"); } util::aoc_main!();