blob: 6ec4a1c5e12270b57c52705ffee207c0d314c5c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
const std = @import("std");
pub fn main() !void {
const buf = @embedFile("input");
var lines = std.mem.splitScalar(u8, buf, '\n');
var dial: i32 = 50;
var num_zeros: i32 = 0;
var num_zeros_p1: i32 = 0;
while (lines.next()) |line| {
if (line.len < 2) continue;
const num = try std.fmt.parseInt(i32, line[1.. line.len], 10);
const left_turn = line[0] == 'L';
if (dial == 0 and left_turn) num_zeros -= 1;
dial = if(left_turn) dial - num else dial + num;
const increment: i32 = @intCast(@abs(@divFloor(if(left_turn) dial-1 else dial,100)));
dial = @mod(dial,100);
num_zeros += increment;
if(dial == 0) num_zeros_p1 += 1;
}
std.debug.print("{} {}\n", .{num_zeros_p1, num_zeros});
}
|