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
32
33
|
const print = std.debug.print;
const std = @import("std");
const input = @embedFile("input");
inline fn get(x: i8, y: i8) u8 {
return switch (x) {
0...99 => switch (y) {
0...99 => input[@intCast(usize, x) + @intCast(usize, y) * 101],
else => ':',
},
else => ':',
};
}
pub fn main() void {
var sum: usize = 0;
defer print("{}\n", .{ sum });
var row: i8 = 0;
while (row < 100) : (row += 1) {
var col: i8 = 0;
while (col < 100) : (col += 1) {
const height = get(col, row);
sum += @boolToInt(@reduce(.And, @Vector(4, u8){
get(col + 1, row),
get(col, row + 1),
get(col - 1, row),
get(col, row - 1),
} > @splat(4, height))) * (height - '/');
}
}
}
|