mirror of
https://github.com/javalsai/aoc.git
synced 2026-01-13 01:19:59 +01:00
zig perf print
This commit is contained in:
@@ -1,37 +1,41 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
const time = std.time;
|
||||||
|
const Timer = time.Timer;
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
var file = try std.fs.cwd()
|
var file = try std.fs.cwd()
|
||||||
.openFile("../input.txt", .{});
|
.openFile("../input.txt", .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
|
var buf: [32 * 1024]u8 = undefined;
|
||||||
|
buf[try file.read(&buf) - 1] = ' ';
|
||||||
|
// _ = try file.read(&buf);
|
||||||
|
|
||||||
var buf_reader = std.io.bufferedReader(file.reader());
|
var timer = try Timer.start();
|
||||||
var in_stream = buf_reader.reader();
|
|
||||||
|
|
||||||
var buf: [64]u8 = undefined;
|
|
||||||
var t: u32 = 0;
|
var t: u32 = 0;
|
||||||
while (try in_stream.readUntilDelimiterOrEof(&buf, '\n')) |line| {
|
var split = std.mem.splitScalar(u8, &buf, '\n');
|
||||||
|
out: while (split.next()) |line| {
|
||||||
|
// if (line[0] == 0) continue;
|
||||||
var split_iter = std.mem.split(u8, line, " ");
|
var split_iter = std.mem.split(u8, line, " ");
|
||||||
|
|
||||||
var dir: i8 = 0;
|
var dir: i8 = 0;
|
||||||
var prev = try std.fmt.parseInt(i8, split_iter.next() orelse unreachable, 10);
|
var prev = try std.fmt.parseInt(i8, split_iter.next().?, 10);
|
||||||
t += while (split_iter.next()) |strnum| {
|
while (split_iter.next()) |strnum| {
|
||||||
const n = try std.fmt.parseInt(i8, strnum, 10);
|
const n = try std.fmt.parseInt(i8, strnum, 10);
|
||||||
const d = prev - n;
|
const d = prev - n;
|
||||||
prev = n;
|
|
||||||
if (d == 0 or @abs(d) > 3)
|
if (d == 0 or @abs(d) > 3)
|
||||||
break 0;
|
continue :out;
|
||||||
|
|
||||||
if (dir == 0) {
|
if (dir == 0) {
|
||||||
dir = d;
|
dir = d;
|
||||||
} else if (!sameSign(dir, d)) {
|
} else if (d ^ dir < 0)
|
||||||
break 0;
|
continue :out;
|
||||||
}
|
prev = n;
|
||||||
} else 1;
|
}
|
||||||
}
|
|
||||||
std.debug.print("Total {d}\n", .{t});
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn sameSign(n1: i8, n2: i8) bool {
|
t += 1;
|
||||||
return (n1 < 0) == (n2 < 0);
|
}
|
||||||
|
|
||||||
|
const elapsed: f64 = @floatFromInt(timer.read());
|
||||||
|
std.debug.print("Total {d} in {d:.6}µs\n", .{ t, elapsed / time.ns_per_us });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user