This commit is contained in:
2019-12-04 23:11:57 +00:00
parent e445b7582a
commit a2607b8508
2 changed files with 56 additions and 0 deletions

14
04/build.zig Normal file
View File

@@ -0,0 +1,14 @@
const Builder = @import("std").build.Builder;
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
const exe = b.addExecutable("04", "src/main.zig");
exe.setBuildMode(mode);
exe.install();
const run_cmd = exe.run();
run_cmd.step.dependOn(b.getInstallStep());
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
}

42
04/src/main.zig Normal file
View File

@@ -0,0 +1,42 @@
const std = @import("std");
const first = 171309;
const last = 643603;
// - [x] It is a six-digit number (implied)
// - [x] The value is within the range given in your puzzle input (implied)
// - [x] Two adjacent digits are the same (like 22 in 122345).
// - [x] Going from left to right, the digits never decrease; they only ever increase or stay the same (like 111123 or 135679).
fn tests1(num: i32) anyerror!bool {
var buf: [6]u8 = undefined;
var numStr = try std.fmt.bufPrint(&buf, "{}", num);
if (numStr[0] > numStr[1] or
numStr[1] > numStr[2] or
numStr[2] > numStr[3] or
numStr[3] > numStr[4] or
numStr[4] > numStr[5]
) return false;
return
numStr[0] == numStr[1] or
numStr[1] == numStr[2] or
numStr[2] == numStr[3] or
numStr[3] == numStr[4] or
numStr[4] == numStr[5];
}
pub fn main() anyerror!void {
var count: i32 = 0;
var i: i32 = first;
while (i <= last) : (i+=1) {
if (try tests1(i)) {
//std.debug.warn("Match: {}\n", i);
count+=1;
}
}
std.debug.warn("Part 1: matches: {}\n", count);
}