37 lines
1.1 KiB
Zig
37 lines
1.1 KiB
Zig
const std = @import("std");
|
|
|
|
const example = @embedFile("example");
|
|
const example2 = @embedFile("example2");
|
|
const example3 = @embedFile("example3");
|
|
const example4 = @embedFile("example4");
|
|
const example5 = @embedFile("example5");
|
|
const input = @embedFile("input");
|
|
|
|
pub fn main() anyerror!void {
|
|
try std.testing.expectEqual(solve(example), 19);
|
|
try std.testing.expectEqual(solve(example2), 23);
|
|
try std.testing.expectEqual(solve(example3), 23);
|
|
try std.testing.expectEqual(solve(example4), 29);
|
|
try std.testing.expectEqual(solve(example5), 26);
|
|
const result = solve(input);
|
|
try std.io.getStdOut().writer().print("{}\n", .{result});
|
|
}
|
|
|
|
fn solve(puzzle: []const u8) u64 {
|
|
var n: u64 = 13;
|
|
outer: while (true) : (n += 1) {
|
|
var i: u64 = n;
|
|
while (i >= n - 13) : (i -= 1) {
|
|
var j: u64 = i - 1;
|
|
while (j >= n - 13) : (j -= 1) {
|
|
if (puzzle[i] == puzzle[j]) {
|
|
continue :outer;
|
|
}
|
|
if (j == 0) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return n + 1;
|
|
}
|
|
}
|