+7
-7
src/day1.zig
+7
-7
src/day1.zig
···
1
const std = @import("std");
2
3
-
pub fn run(input: []u8) !void {
4
var lines = std.mem.tokenizeScalar(u8, input, '\n');
5
6
var dial: u8 = 50;
7
-
var zeroes_p1: u64 = 0;
8
-
var zeroes_p2: u64 = 0;
9
while (lines.next()) |line| {
10
const direction: i2 = switch (line[0]) {
11
'L' => -1,
···
24
dial = @intCast(@mod(new_rotation, 100));
25
26
if (dial == 0) {
27
-
zeroes_p1 += 1;
28
}
29
30
-
zeroes_p2 += zeroes_clicked;
31
}
32
33
-
std.debug.print("Answer P1: {d}\n", .{zeroes_p1});
34
-
std.debug.print("Answer P2: {d}\n", .{zeroes_p2});
35
}
···
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
5
var lines = std.mem.tokenizeScalar(u8, input, '\n');
6
7
var dial: u8 = 50;
8
+
var answer1: u64 = 0;
9
+
var answer2: u64 = 0;
10
while (lines.next()) |line| {
11
const direction: i2 = switch (line[0]) {
12
'L' => -1,
···
25
dial = @intCast(@mod(new_rotation, 100));
26
27
if (dial == 0) {
28
+
answer1 += 1;
29
}
30
31
+
answer2 += zeroes_clicked;
32
}
33
34
+
return .{ answer1, answer2 };
35
}
+3
-3
src/day2.zig
+3
-3
src/day2.zig
···
1
const std = @import("std");
2
3
-
pub fn run(input: []u8) !void {
4
var ranges = std.mem.tokenizeScalar(u8, std.mem.trimEnd(u8, input, "\n"), ',');
5
6
var answer1: u64 = 0;
···
48
}
49
}
50
51
-
std.debug.print("Answer P1: {d}\n", .{answer1});
52
-
std.debug.print("Answer P2: {d}\n", .{answer2});
53
}
···
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
5
var ranges = std.mem.tokenizeScalar(u8, std.mem.trimEnd(u8, input, "\n"), ',');
6
7
var answer1: u64 = 0;
···
49
}
50
}
51
52
+
return .{ answer1, answer2 };
53
}
+3
-3
src/day3.zig
+3
-3
src/day3.zig
···
1
const std = @import("std");
2
3
-
pub fn run(input: []u8) !void {
4
var lines = std.mem.tokenizeScalar(u8, input, '\n');
5
6
var answer1: u64 = 0;
···
10
answer2 += try calculateJoltage(line, 12);
11
}
12
13
-
std.debug.print("Answer P1: {d}\n", .{answer1});
14
-
std.debug.print("Answer P2: {d}\n", .{answer2});
15
}
16
17
fn calculateJoltage(line: []const u8, num_digits: usize) !u64 {
···
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
4
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
5
var lines = std.mem.tokenizeScalar(u8, input, '\n');
6
7
var answer1: u64 = 0;
···
11
answer2 += try calculateJoltage(line, 12);
12
}
13
14
+
return .{ answer1, answer2 };
15
}
16
17
fn calculateJoltage(line: []const u8, num_digits: usize) !u64 {
+3
-3
src/day4.zig
+3
-3
src/day4.zig
···
1
const std = @import("std");
2
const StringTokenIterator = std.mem.TokenIterator(u8, .scalar);
3
4
const MAX_WIDTH = 137;
···
32
return .{ .data = grid, .maxX = line_len, .maxY = i };
33
}
34
35
-
pub fn run(input: []u8) !void {
36
var lines = std.mem.tokenizeScalar(u8, input, '\n');
37
38
const grid = try newGrid(&lines);
···
95
}
96
}
97
98
-
std.debug.print("Answer P1: {d}\n", .{answer1});
99
-
std.debug.print("Answer P2: {d}\n", .{answer2});
100
}
···
1
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
const StringTokenIterator = std.mem.TokenIterator(u8, .scalar);
4
5
const MAX_WIDTH = 137;
···
33
return .{ .data = grid, .maxX = line_len, .maxY = i };
34
}
35
36
+
pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } {
37
var lines = std.mem.tokenizeScalar(u8, input, '\n');
38
39
const grid = try newGrid(&lines);
···
96
}
97
}
98
99
+
return .{ answer1, answer2 };
100
}
+2
-3
src/day5.zig
+2
-3
src/day5.zig
···
11
}
12
};
13
14
-
pub fn run(allocator: Allocator, input: []u8) !void {
15
var sections = std.mem.tokenizeSequence(u8, input, "\n\n");
16
17
var answer1: u64 = 0;
···
71
answer2 += item.high - item.low + 1;
72
}
73
74
-
std.debug.print("Answer P1: {d}\n", .{answer1});
75
-
std.debug.print("Answer P2: {d}\n", .{answer2});
76
}
+6
src/day6.zig
+6
src/day6.zig
+19
-14
src/main.zig
+19
-14
src/main.zig
···
1
const std = @import("std");
2
-
const day1 = @import("./day1.zig");
3
-
const day2 = @import("./day2.zig");
4
-
const day3 = @import("./day3.zig");
5
-
const day4 = @import("./day4.zig");
6
-
const day5 = @import("./day5.zig");
7
8
pub fn main() !void {
9
var args = std.process.args();
···
19
var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
20
const allocator = gpa.allocator();
21
22
-
const day = try std.fmt.parseInt(u4, day_str, 10);
23
24
-
const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day, test_str });
25
defer allocator.free(input_path);
26
27
const input_file = try std.fs.cwd().openFile(input_path, .{});
···
33
const input_content = try reader.interface.allocRemaining(allocator, .unlimited);
34
defer allocator.free(input_content);
35
36
-
switch (day) {
37
-
1 => try day1.run(input_content),
38
-
2 => try day2.run(input_content),
39
-
3 => try day3.run(input_content),
40
-
4 => try day4.run(input_content),
41
-
5 => try day5.run(allocator, input_content),
42
-
else => {},
43
}
44
}
···
1
const std = @import("std");
2
+
const days = .{
3
+
@import("./day1.zig"),
4
+
@import("./day2.zig"),
5
+
@import("./day3.zig"),
6
+
@import("./day4.zig"),
7
+
@import("./day5.zig"),
8
+
};
9
10
pub fn main() !void {
11
var args = std.process.args();
···
21
var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
22
const allocator = gpa.allocator();
23
24
+
const day_num = try std.fmt.parseInt(u4, day_str, 10);
25
26
+
const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day_num, test_str });
27
defer allocator.free(input_path);
28
29
const input_file = try std.fs.cwd().openFile(input_path, .{});
···
35
const input_content = try reader.interface.allocRemaining(allocator, .unlimited);
36
defer allocator.free(input_content);
37
38
+
inline for (days, 1..) |day, i| {
39
+
if (i == day_num) {
40
+
std.debug.print("Day {d}\n\n", .{i});
41
+
42
+
const answer1, const answer2 = try day.run(allocator, input_content);
43
+
44
+
std.debug.print("Answer P1: {d}\n", .{answer1});
45
+
std.debug.print("Answer P2: {d}\n", .{answer2});
46
+
break;
47
+
}
48
}
49
}