aboutsummaryrefslogtreecommitdiff
path: root/2022/04-camp-cleanup
diff options
context:
space:
mode:
authorJulien Dessaux2022-12-04 06:28:59 +0100
committerJulien Dessaux2022-12-04 06:28:59 +0100
commitc912b3347da6da6062b8ce56eac1711d6fb54ed9 (patch)
tree7f4004f911b5ce2eb8ccf5df5e18ffbeb1903811 /2022/04-camp-cleanup
parent2022-03 in zig (diff)
downloadadvent-of-code-c912b3347da6da6062b8ce56eac1711d6fb54ed9.tar.gz
advent-of-code-c912b3347da6da6062b8ce56eac1711d6fb54ed9.tar.bz2
advent-of-code-c912b3347da6da6062b8ce56eac1711d6fb54ed9.zip
2022-04 in zig
Diffstat (limited to '')
-rw-r--r--2022/04-camp-cleanup/example6
-rw-r--r--2022/04-camp-cleanup/first.zig26
-rw-r--r--2022/04-camp-cleanup/input1000
-rw-r--r--2022/04-camp-cleanup/second.zig26
4 files changed, 1058 insertions, 0 deletions
diff --git a/2022/04-camp-cleanup/example b/2022/04-camp-cleanup/example
new file mode 100644
index 0000000..9f9e9cf
--- /dev/null
+++ b/2022/04-camp-cleanup/example
@@ -0,0 +1,6 @@
+2-4,6-8
+2-3,4-5
+5-7,7-9
+2-8,3-7
+6-6,4-6
+2-6,4-8
diff --git a/2022/04-camp-cleanup/first.zig b/2022/04-camp-cleanup/first.zig
new file mode 100644
index 0000000..6a5bf52
--- /dev/null
+++ b/2022/04-camp-cleanup/first.zig
@@ -0,0 +1,26 @@
+const std = @import("std");
+
+const example = @embedFile("example");
+const input = @embedFile("input");
+
+pub fn main() anyerror!void {
+ try std.testing.expectEqual(solve(example), 2);
+ const result = try solve(input);
+ try std.io.getStdOut().writer().print("{}\n", .{result});
+}
+
+fn solve(puzzle: []const u8) !u64 {
+ var it = std.mem.tokenize(u8, puzzle, "\n");
+ var tot: u64 = 0;
+ while (it.next()) |line| {
+ var it2 = std.mem.tokenize(u8, line, "-,");
+ const a = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const b = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const c = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const d = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ if (a <= c and b >= d or a >= c and b <= d) {
+ tot += 1;
+ }
+ }
+ return tot;
+}
diff --git a/2022/04-camp-cleanup/input b/2022/04-camp-cleanup/input
new file mode 100644
index 0000000..ee102df
--- /dev/null
+++ b/2022/04-camp-cleanup/input
@@ -0,0 +1,1000 @@
+14-28,13-28
+72-81,82-91
+4-4,6-95
+47-49,48-59
+26-36,37-76
+2-99,98-99
+26-36,19-35
+85-85,13-84
+14-94,15-95
+26-89,16-27
+84-89,29-88
+2-61,1-60
+80-92,2-81
+35-47,19-36
+68-70,69-86
+59-97,12-92
+56-65,12-49
+18-18,18-55
+7-98,7-98
+61-94,32-93
+88-98,2-96
+39-39,44-84
+62-62,62-83
+7-30,8-60
+47-90,46-64
+22-73,21-41
+15-78,14-14
+52-72,53-98
+83-85,68-84
+61-73,63-74
+8-9,9-94
+5-97,46-98
+35-99,3-94
+68-95,67-83
+41-55,56-56
+10-90,9-11
+14-48,14-47
+57-65,64-93
+33-51,33-50
+15-79,13-16
+38-41,39-42
+1-15,6-16
+6-96,81-98
+32-42,35-43
+20-52,9-51
+5-67,66-68
+56-56,2-55
+13-59,14-60
+10-86,9-86
+4-45,5-46
+76-80,75-79
+1-98,1-97
+23-48,15-45
+8-21,20-99
+20-68,21-86
+21-28,22-27
+25-42,15-26
+5-88,98-99
+5-56,14-34
+98-99,33-99
+2-84,83-98
+43-69,42-67
+3-3,3-62
+72-83,74-84
+10-12,11-91
+19-74,53-75
+10-98,9-99
+30-96,29-30
+32-68,67-83
+24-33,32-92
+29-60,30-61
+12-19,14-39
+34-96,95-97
+15-18,14-89
+44-50,45-53
+78-81,2-78
+7-89,71-90
+5-36,27-44
+2-95,9-96
+4-63,3-98
+10-57,9-56
+42-91,41-60
+30-75,82-99
+56-98,99-99
+7-45,45-46
+32-95,31-89
+99-99,2-97
+60-98,24-98
+2-69,70-86
+74-97,7-98
+4-68,5-63
+27-65,7-83
+1-74,62-76
+24-65,25-78
+15-98,20-95
+8-50,49-82
+98-99,20-98
+3-89,6-90
+66-85,66-86
+64-96,63-63
+3-19,1-81
+7-94,93-95
+45-88,95-96
+7-12,11-83
+35-70,34-71
+3-98,2-2
+41-92,40-42
+2-94,1-1
+75-97,78-96
+46-68,68-91
+34-35,33-48
+97-97,68-95
+73-73,31-72
+18-61,17-60
+8-95,9-96
+9-64,29-67
+68-70,32-82
+34-66,34-65
+48-97,96-96
+4-81,3-48
+12-80,8-13
+10-33,11-34
+31-74,20-54
+47-97,46-67
+42-99,43-98
+75-75,50-74
+6-95,2-5
+2-96,3-95
+15-60,45-61
+7-52,7-52
+16-76,17-77
+37-95,38-94
+59-76,75-76
+79-90,26-80
+25-60,60-92
+75-77,37-76
+56-91,57-92
+25-68,67-76
+94-98,2-92
+2-94,1-3
+2-24,3-84
+58-93,92-94
+38-97,38-99
+32-95,31-33
+27-47,23-28
+73-90,61-72
+60-60,61-94
+2-51,12-51
+37-85,40-86
+98-98,17-97
+5-99,1-1
+6-16,15-75
+93-94,57-94
+78-96,77-91
+27-28,28-77
+95-97,61-96
+1-67,66-68
+80-93,11-79
+7-7,6-8
+5-93,14-89
+23-49,3-49
+10-60,19-61
+32-77,31-32
+4-50,3-4
+19-26,20-57
+18-23,22-85
+59-71,16-72
+81-99,51-82
+14-44,13-43
+46-90,24-91
+2-3,3-98
+3-99,6-97
+68-77,29-69
+94-98,30-94
+46-98,10-97
+13-75,12-74
+60-81,59-67
+16-90,15-15
+12-85,4-10
+82-99,1-98
+2-92,64-92
+75-97,1-94
+5-71,3-70
+23-63,24-64
+44-78,19-79
+60-65,60-66
+29-84,28-83
+21-86,20-28
+1-42,6-43
+30-63,30-63
+50-84,61-93
+6-74,5-73
+40-93,39-57
+1-99,1-31
+14-88,75-87
+50-83,50-50
+2-94,1-1
+24-81,23-89
+82-92,93-93
+32-84,83-98
+7-74,7-7
+34-96,96-99
+9-22,10-98
+56-95,21-57
+14-30,15-78
+11-36,35-37
+79-85,73-86
+65-68,64-67
+12-18,15-67
+42-84,41-43
+52-52,3-51
+80-82,27-81
+5-24,5-23
+38-38,39-61
+10-33,33-34
+7-83,9-82
+39-71,36-72
+82-82,2-81
+10-20,20-76
+21-71,20-20
+55-66,55-65
+2-3,4-54
+41-54,25-40
+10-25,24-26
+49-97,96-99
+9-58,9-57
+88-88,3-89
+5-94,4-93
+38-58,12-37
+1-6,31-79
+4-96,87-92
+10-62,1-61
+23-53,22-23
+6-93,6-93
+73-81,19-67
+49-50,29-50
+68-97,67-96
+23-60,44-91
+20-65,4-5
+53-82,52-53
+5-95,5-5
+45-55,27-54
+3-80,1-79
+29-38,28-28
+63-68,68-78
+13-73,10-72
+26-85,26-85
+65-98,28-60
+56-56,57-59
+21-99,14-53
+13-77,14-77
+67-99,54-68
+14-98,13-13
+54-91,55-90
+56-58,57-97
+74-88,74-88
+92-93,2-93
+2-95,1-94
+33-52,43-53
+25-64,26-88
+24-86,9-25
+13-76,5-14
+31-80,30-32
+97-99,47-98
+2-92,2-2
+6-54,2-53
+5-89,4-95
+1-76,78-78
+54-69,53-59
+20-76,21-77
+78-79,18-78
+35-96,97-97
+6-71,72-79
+1-3,2-88
+31-88,32-88
+89-91,69-90
+39-41,3-40
+28-95,94-96
+9-69,57-68
+5-89,6-88
+8-20,32-82
+62-96,63-96
+71-94,71-71
+51-80,42-62
+45-96,97-98
+15-89,89-99
+23-94,34-44
+4-64,63-63
+53-64,53-65
+16-99,4-98
+40-41,41-69
+43-95,94-95
+45-55,46-65
+17-19,2-18
+13-58,13-55
+64-90,65-91
+80-82,81-83
+5-87,88-88
+16-96,22-79
+2-61,1-59
+10-45,10-10
+46-46,46-68
+71-75,70-73
+6-8,11-84
+31-38,37-38
+16-65,16-85
+8-56,7-55
+11-36,35-37
+62-85,29-86
+46-67,66-67
+92-92,30-91
+58-66,58-63
+22-40,12-39
+57-68,57-57
+19-72,71-88
+98-98,1-97
+3-97,6-84
+37-88,23-51
+6-92,93-93
+13-86,1-86
+8-62,9-63
+15-41,14-31
+92-95,45-94
+5-13,18-87
+20-37,21-37
+8-93,99-99
+97-97,93-98
+44-73,43-72
+73-80,67-81
+23-79,23-38
+10-12,11-38
+1-14,10-56
+31-31,12-30
+32-56,56-92
+90-98,1-87
+42-72,41-72
+48-60,48-59
+68-69,70-70
+25-95,94-97
+55-55,13-54
+55-65,55-55
+5-91,3-90
+1-95,9-91
+66-66,67-80
+26-95,27-94
+3-11,2-2
+56-81,55-72
+19-84,52-91
+14-96,15-97
+4-70,3-69
+60-84,59-84
+11-34,11-33
+8-93,96-98
+50-95,49-77
+10-51,50-79
+7-35,34-34
+20-25,24-92
+25-27,26-50
+87-88,76-86
+8-85,8-25
+63-78,64-84
+95-98,70-96
+94-99,94-99
+29-92,30-92
+33-80,33-88
+67-71,68-72
+2-3,3-93
+11-71,12-72
+12-57,57-57
+3-4,4-95
+42-90,43-91
+85-86,85-98
+4-78,1-77
+6-99,6-6
+6-83,82-84
+4-79,4-79
+4-42,32-41
+80-85,4-81
+1-40,39-68
+2-78,78-79
+20-69,24-70
+36-61,37-62
+82-84,13-83
+35-36,19-35
+3-3,4-67
+12-20,21-21
+18-24,24-56
+92-94,93-95
+30-83,30-70
+4-81,2-82
+4-22,23-88
+64-64,37-63
+9-41,29-62
+48-95,69-96
+52-68,52-69
+12-81,13-82
+5-6,6-84
+14-84,15-84
+61-61,61-91
+18-26,27-31
+15-83,14-82
+46-70,7-84
+1-41,40-46
+60-62,4-61
+34-92,33-91
+38-64,39-65
+8-94,8-94
+31-84,62-97
+31-32,31-46
+69-97,40-56
+24-35,35-72
+37-85,36-84
+63-65,9-64
+34-51,35-57
+5-96,95-96
+26-86,29-86
+4-80,2-81
+53-62,53-62
+33-83,34-84
+25-82,1-7
+24-39,23-24
+67-68,68-69
+21-58,2-22
+54-61,62-68
+96-99,26-96
+26-70,2-27
+6-94,5-96
+72-88,62-87
+7-76,67-72
+67-98,60-85
+38-39,39-91
+7-23,7-10
+22-60,21-59
+3-3,4-93
+9-66,33-53
+53-76,54-76
+23-85,6-98
+82-88,82-88
+42-78,15-84
+54-78,59-79
+8-99,7-9
+5-94,6-94
+32-32,32-80
+23-52,24-53
+38-88,38-87
+3-54,2-2
+56-74,56-73
+15-15,16-57
+6-62,5-6
+40-40,39-87
+1-77,10-77
+60-95,1-60
+99-99,71-83
+18-35,45-69
+55-83,48-86
+33-33,18-32
+15-61,92-97
+15-69,42-70
+37-74,38-75
+62-98,62-97
+4-70,15-57
+56-56,55-55
+8-94,93-95
+62-64,63-75
+59-67,68-68
+1-91,3-92
+55-69,54-54
+6-81,80-88
+59-61,15-60
+42-96,8-79
+81-84,34-71
+57-59,60-60
+12-95,12-81
+67-67,61-66
+9-31,30-47
+4-52,42-98
+72-87,1-73
+74-99,73-99
+8-30,10-95
+3-97,3-98
+12-16,17-92
+87-94,13-86
+15-50,51-51
+6-46,45-45
+71-71,70-70
+31-93,30-30
+20-21,20-74
+4-75,2-89
+31-74,31-31
+6-26,22-23
+46-87,47-88
+58-77,59-76
+75-75,71-76
+95-97,10-96
+6-11,6-27
+86-87,37-88
+13-17,14-16
+56-76,10-77
+9-88,5-7
+93-95,2-94
+29-61,29-61
+42-82,41-83
+2-14,3-98
+46-91,46-91
+57-74,57-74
+10-57,73-83
+13-31,5-94
+48-85,33-49
+48-89,88-89
+4-98,2-5
+7-85,6-84
+48-75,82-89
+54-77,53-77
+25-90,24-43
+92-94,15-91
+46-81,78-78
+8-89,88-90
+20-78,13-21
+22-28,21-26
+5-87,88-88
+5-94,95-95
+37-43,42-88
+52-52,53-55
+30-76,29-30
+53-88,40-61
+6-82,81-83
+94-96,17-94
+2-92,69-92
+15-80,80-81
+19-90,39-89
+87-99,87-99
+32-86,33-87
+58-87,57-82
+6-74,5-73
+3-17,17-82
+51-69,50-62
+64-68,19-69
+40-92,91-92
+3-93,2-75
+11-94,10-94
+78-98,97-99
+18-70,71-98
+58-87,67-93
+29-57,22-58
+18-35,19-88
+86-95,14-86
+6-37,27-36
+53-65,36-52
+10-95,25-94
+22-60,95-96
+52-79,53-80
+9-38,8-9
+39-54,27-44
+25-98,88-99
+10-90,9-10
+14-48,13-47
+11-38,12-51
+38-55,25-38
+45-55,46-54
+16-89,22-90
+10-56,55-65
+64-88,86-87
+4-28,27-82
+21-75,21-41
+9-11,10-94
+17-86,2-16
+6-51,46-50
+92-93,92-93
+16-47,28-49
+54-58,34-57
+36-50,91-95
+40-44,38-43
+57-96,56-95
+20-30,29-30
+26-92,16-31
+3-79,2-78
+27-74,68-73
+38-43,39-75
+4-64,5-65
+14-62,10-94
+6-21,5-26
+12-12,12-61
+86-86,66-87
+21-47,36-54
+45-81,43-46
+9-63,64-78
+53-55,1-54
+38-52,47-71
+26-29,25-28
+5-92,71-82
+22-81,22-80
+59-93,58-93
+2-11,10-96
+19-24,29-45
+10-98,9-9
+19-45,13-19
+16-83,17-84
+14-46,32-41
+31-90,45-89
+3-98,2-98
+67-91,56-68
+21-90,10-90
+21-41,21-33
+1-3,2-99
+31-78,78-89
+4-23,22-23
+7-92,4-91
+9-75,9-76
+30-35,34-95
+17-90,17-89
+11-54,10-11
+13-87,12-39
+12-59,15-60
+14-89,89-90
+3-98,64-95
+23-99,14-90
+3-3,3-94
+32-77,73-78
+12-14,13-95
+34-66,61-64
+43-49,62-79
+87-87,21-86
+11-30,36-72
+62-62,23-63
+63-86,36-62
+31-35,26-30
+32-98,13-33
+29-59,28-30
+14-92,9-15
+50-65,49-64
+7-49,7-49
+17-17,16-18
+7-13,8-14
+94-98,56-91
+34-72,33-34
+14-87,61-88
+65-65,44-78
+30-31,32-32
+11-51,10-11
+35-82,34-35
+87-90,4-88
+49-53,15-49
+1-3,2-94
+67-87,18-68
+16-71,6-17
+66-85,79-86
+77-86,59-78
+12-38,13-60
+17-37,16-38
+25-80,26-81
+50-95,96-98
+64-66,6-65
+60-69,48-68
+1-63,2-64
+20-94,95-95
+31-59,66-94
+45-93,12-87
+11-33,16-58
+48-97,47-96
+27-86,28-87
+21-25,21-57
+44-46,45-47
+23-44,22-44
+44-82,10-45
+9-91,9-92
+48-80,47-74
+47-49,29-48
+18-36,9-27
+16-93,92-95
+39-80,24-88
+16-99,62-97
+6-66,4-7
+91-98,31-90
+47-86,46-87
+16-88,15-84
+59-80,21-79
+92-98,6-88
+4-43,18-44
+10-58,1-1
+19-94,3-97
+2-73,4-74
+15-23,75-76
+92-99,21-93
+13-14,14-89
+27-95,63-95
+69-92,70-94
+7-73,6-35
+15-87,44-88
+28-81,82-95
+61-94,60-61
+41-45,42-70
+17-76,16-75
+20-91,19-38
+1-62,4-49
+59-59,4-58
+25-27,26-92
+34-78,33-63
+29-71,51-72
+49-74,48-49
+33-94,34-95
+7-15,16-60
+27-75,28-75
+5-6,6-73
+4-4,5-90
+21-23,6-22
+30-93,30-93
+28-74,12-18
+24-77,78-78
+58-69,68-70
+2-89,1-89
+71-75,76-76
+13-35,34-34
+16-94,17-95
+31-41,77-86
+27-76,26-35
+9-44,12-45
+44-46,9-45
+8-88,7-7
+74-75,60-75
+33-56,48-72
+11-82,10-10
+2-95,94-96
+37-52,54-58
+12-32,12-32
+2-68,2-69
+2-12,11-32
+3-7,8-90
+24-24,25-47
+46-47,47-55
+25-78,25-25
+41-47,40-41
+92-93,12-92
+87-88,88-90
+8-52,13-59
+25-86,25-86
+40-52,40-52
+98-99,72-86
+6-90,12-91
+4-7,6-65
+41-89,88-96
+29-83,84-90
+3-82,1-90
+19-35,25-34
+27-99,27-99
+30-72,31-73
+28-30,8-29
+5-95,5-94
+16-94,20-93
+11-61,61-63
+2-4,79-80
+78-80,9-79
+81-83,12-81
+41-46,45-89
+8-68,3-6
+70-72,69-72
+3-87,4-86
+6-99,5-98
+68-85,69-92
+7-11,84-98
+59-69,58-68
+18-73,17-17
+10-90,91-98
+88-93,89-94
+17-17,18-32
+1-63,2-63
+78-78,44-77
+47-90,89-91
+32-74,33-75
+37-38,37-87
+5-80,4-79
+94-95,19-95
+53-63,52-63
+52-70,28-51
+42-95,43-89
+89-93,29-92
+81-98,70-89
+27-85,28-93
+36-72,20-37
+83-87,82-82
+36-77,36-78
+28-54,27-28
+61-76,77-77
+67-71,66-71
+53-77,70-78
+73-77,64-78
+24-81,11-25
+1-2,11-87
+66-74,66-75
+6-7,7-93
+7-37,38-78
+35-89,34-86
+45-72,34-72
+27-95,26-71
+27-78,26-27
+8-96,4-97
+15-70,7-11
+24-92,15-25
+16-45,44-50
+27-79,14-78
+30-33,32-95
+21-55,44-56
+58-97,2-96
+91-97,92-97
+9-13,77-82
+19-90,18-89
+15-90,16-93
+15-18,29-69
+30-41,40-42
+67-80,76-82
+39-65,2-97
+17-95,18-95
+27-88,6-89
+48-74,47-73
+62-93,63-94
+4-61,4-60
+32-91,33-91
+8-91,51-92
+1-99,1-99
+3-64,2-65
+12-58,4-57
+6-36,37-37
+43-59,17-58
+94-99,93-93
+37-61,36-60
+4-8,5-16
+23-25,34-88
+26-49,25-48
+21-21,21-62
+9-83,10-84
+7-90,6-7
+71-97,71-98
+88-99,85-97
+94-98,15-86
+38-61,39-71
+2-87,4-80
+28-87,18-18
+1-88,7-85
+17-87,16-88
+78-88,53-78
+19-45,46-66
+30-87,23-29
+6-73,7-74
+8-69,68-70
+42-70,41-49
+11-60,12-61
+28-86,85-92
+18-79,14-78
+4-91,2-90
+82-93,82-96
+50-86,33-49
+96-98,29-95
+31-35,27-34
+90-93,43-91
+35-35,26-34
+7-67,34-68
+24-72,23-73
+12-96,12-97
+61-68,51-83
+93-95,24-94
+73-92,11-84
+38-81,16-82
+20-76,19-75
+1-4,3-96
+82-85,82-86
+41-57,46-56
+22-22,19-24
+2-97,98-98
+96-96,28-95
+4-58,3-39
+35-86,28-85
+5-80,64-81
+81-92,82-93
+4-79,3-4
+5-26,27-53
+19-75,3-4
+80-81,54-81
+6-9,8-90
+1-97,13-98
+57-57,41-56
+3-88,44-89
+16-53,15-52
+24-84,25-83
+17-76,16-54
+22-72,23-96
+78-79,66-79
+21-35,2-22
+1-89,10-90
+97-98,98-98
+27-98,28-99
+1-79,2-97
+88-88,5-82
+51-86,49-51
+20-87,21-86
+99-99,52-79
+56-58,1-57
+71-74,70-70
+22-51,51-77
+55-92,54-91
+63-99,6-93
+42-88,41-87
+44-53,44-52
+19-59,23-67
+10-76,5-41
+49-64,63-65
+32-64,17-63
+1-2,3-99
+29-75,28-29
+98-98,31-97
+63-84,64-85
+40-85,39-84
+30-46,45-69
+1-25,3-99
+48-98,49-99
+5-40,23-41
+78-79,50-79
+9-10,10-10
+37-65,37-65
+16-22,17-35
+47-82,46-47
+14-67,13-14
+32-93,11-56
+65-93,66-94
+20-80,21-80
+92-94,3-89
+67-68,16-68
+12-97,97-99
+2-16,19-95
+8-32,31-35
+98-98,76-95
+8-57,8-58
+10-25,11-25
+23-33,34-66
+12-69,12-23
+10-68,9-69
+42-50,31-51
+27-81,28-80
+7-99,8-99
+5-88,5-87
+39-84,7-85
+2-61,74-88
+4-56,4-55
+47-60,48-79
+19-47,46-93
+35-93,34-92
+64-96,64-96
+28-28,28-34
+54-91,92-92
+15-27,27-27
+17-79,27-50
+1-3,2-88
+14-97,96-96
+19-66,42-67
+87-94,37-49
+15-82,87-98
+8-26,8-49
+43-43,50-99
+55-98,25-97
+5-82,6-83
+29-53,47-48
+10-92,9-10
+33-43,13-71
+9-79,10-79
+30-63,31-75
+2-54,1-2
+37-95,21-96
+68-79,16-69
+2-47,46-47
+45-65,5-44
+21-99,28-96
+4-31,4-52
+16-94,8-96
+13-86,85-88
+58-76,53-56
+7-95,30-96
+96-96,28-78
+24-55,23-54
+30-84,30-83
+21-82,7-81
+9-35,36-90
+3-17,1-2
+1-1,2-37
+4-99,4-99
+38-65,37-45
+94-95,31-78
+58-95,94-97
+30-95,29-95
+70-81,76-98
+15-76,21-65
+6-59,5-59
+8-28,7-21
+43-61,62-63
+10-30,10-30
+10-85,10-85
+21-40,22-40
+24-60,29-61
+51-86,13-52
+6-96,5-96
+6-18,17-55
+24-24,24-24
+81-95,96-99
diff --git a/2022/04-camp-cleanup/second.zig b/2022/04-camp-cleanup/second.zig
new file mode 100644
index 0000000..283169e
--- /dev/null
+++ b/2022/04-camp-cleanup/second.zig
@@ -0,0 +1,26 @@
+const std = @import("std");
+
+const example = @embedFile("example");
+const input = @embedFile("input");
+
+pub fn main() anyerror!void {
+ try std.testing.expectEqual(solve(example), 4);
+ const result = try solve(input);
+ try std.io.getStdOut().writer().print("{}\n", .{result});
+}
+
+fn solve(puzzle: []const u8) !u64 {
+ var it = std.mem.tokenize(u8, puzzle, "\n");
+ var tot: u64 = 0;
+ while (it.next()) |line| {
+ var it2 = std.mem.tokenize(u8, line, "-,");
+ const a = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const b = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const c = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ const d = try std.fmt.parseInt(u64, it2.next() orelse unreachable, 10);
+ if (a <= c and b >= d or a >= c and b <= d or a <= c and b >= c or a <= d and b >= d) {
+ tot += 1;
+ }
+ }
+ return tot;
+}