summaryrefslogtreecommitdiff
path: root/src/days/1/1.zig
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});
}