From 3a965871b37c9ab737aeb0c18b170c4060a144f0 Mon Sep 17 00:00:00 2001 From: Orfeas <38209077+0xfea5@users.noreply.github.com> Date: Fri, 8 Dec 2023 19:47:50 +0200 Subject: day7: moving cmp function in struct --- day07/solution.zig | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'day07') diff --git a/day07/solution.zig b/day07/solution.zig index 05224bf..8eda717 100644 --- a/day07/solution.zig +++ b/day07/solution.zig @@ -59,6 +59,20 @@ const Player = struct { self.combo = combo; } + pub fn lessThan(valueFunc: *const fn (u8) u64, lhs: Player, rhs: Player) bool { + if (lhs.combo != rhs.combo) { + return @intFromEnum(lhs.combo) < @intFromEnum(rhs.combo); + } + + for (lhs.hand, rhs.hand) |l, r| { + if (l != r) { + return cmpCard(valueFunc, l, r); + } + } + + return false; + } + pub fn init(hand: []const u8, bid: u64) Player { var res: Player = undefined; @@ -101,27 +115,13 @@ fn cmpCard(valueFunc: *const fn (u8) u64, lhs: u8, rhs: u8) bool { return valueFunc(lhs) < valueFunc(rhs); } -fn playerCmp(valueFunc: *const fn (u8) u64, lhs: Player, rhs: Player) bool { - if (lhs.combo != rhs.combo) { - return @intFromEnum(lhs.combo) < @intFromEnum(rhs.combo); - } - - for (lhs.hand, rhs.hand) |l, r| { - if (l != r) { - return cmpCard(valueFunc, l, r); - } - } - - return false; -} - pub fn part1(players: []Player) void { var ans: u64 = 0; for (players) |*p| { p.evalHand(false); } - mem.sort(Player, players, &cardValue, playerCmp); + mem.sort(Player, players, &cardValue, Player.lessThan); for (players, 1..) |p, rank| { ans += p.bid * rank; @@ -136,7 +136,7 @@ pub fn part2(players: []Player) void { for (players) |*p| { p.evalHand(true); } - mem.sort(Player, players, &cardValueWithJoker, playerCmp); + mem.sort(Player, players, &cardValueWithJoker, Player.lessThan); for (players, 1..) |p, rank| { ans += p.bid * rank; -- cgit v1.2.3