From b2b5248771af451e7fde8614d0093c06dc448d52 Mon Sep 17 00:00:00 2001 From: Brandon Scott Date: Sun, 11 Dec 2022 17:05:00 -0600 Subject: [PATCH] Add Day 4 solution --- rust/Cargo.toml | 1 + rust/resources/day4input.txt | 1000 ++++++++++++++++++++++++++++++++++ rust/src/day4.rs | 60 ++ rust/src/main.rs | 2 + 4 files changed, 1063 insertions(+) create mode 100644 rust/resources/day4input.txt create mode 100644 rust/src/day4.rs diff --git a/rust/Cargo.toml b/rust/Cargo.toml index c1cd145..d39917a 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +regex = "1" \ No newline at end of file diff --git a/rust/resources/day4input.txt b/rust/resources/day4input.txt new file mode 100644 index 0000000..4cfdc23 --- /dev/null +++ b/rust/resources/day4input.txt @@ -0,0 +1,1000 @@ +99-99,18-99 +2-86,1-86 +9-21,10-22 +1-24,7-23 +33-37,35-38 +15-57,14-56 +1-88,3-89 +26-56,27-57 +11-94,93-98 +40-92,3-91 +6-90,5-93 +1-5,9-54 +81-81,20-80 +19-19,20-99 +52-96,52-97 +8-86,85-86 +15-93,92-93 +32-41,33-41 +90-90,23-90 +6-57,56-58 +62-84,63-83 +10-85,11-86 +1-55,54-55 +18-25,24-24 +60-98,59-98 +6-74,7-72 +51-53,52-87 +73-99,14-97 +59-87,7-60 +43-89,42-88 +88-88,79-87 +39-39,21-39 +2-79,1-1 +56-56,56-96 +46-90,47-91 +14-48,48-48 +2-2,2-11 +57-57,4-57 +87-87,1-88 +24-85,85-93 +2-2,3-96 +47-49,47-48 +90-90,29-89 +96-99,15-97 +11-28,12-33 +12-81,6-80 +18-85,85-86 +42-71,41-52 +21-84,22-98 +5-73,7-87 +5-55,55-68 +9-82,10-83 +16-16,16-71 +6-64,6-65 +56-90,90-90 +49-66,36-99 +48-85,52-88 +21-21,21-23 +49-55,4-48 +17-90,50-91 +53-95,52-96 +28-28,33-53 +1-97,1-64 +28-70,27-27 +87-87,29-88 +26-91,72-90 +21-57,22-86 +76-91,75-90 +33-92,32-93 +57-91,58-92 +18-78,17-17 +38-38,38-67 +15-98,61-96 +56-70,56-56 +57-76,57-75 +75-75,67-76 +23-67,22-67 +19-97,98-98 +21-65,20-65 +36-54,33-35 +2-88,1-88 +41-80,6-80 +4-98,4-27 +93-98,4-92 +14-69,13-14 +59-86,86-87 +29-33,17-30 +3-68,2-67 +22-98,6-20 +38-87,38-86 +3-97,97-97 +99-99,24-89 +62-63,47-63 +84-86,1-85 +79-92,91-93 +55-70,54-55 +33-38,28-32 +17-61,5-71 +25-70,69-87 +28-80,11-79 +17-51,29-52 +88-89,18-89 +46-98,21-57 +3-77,77-77 +36-71,23-70 +91-92,50-91 +36-61,37-37 +15-51,14-51 +20-31,30-94 +1-2,1-99 +76-87,76-86 +32-75,32-33 +21-27,20-21 +38-77,11-77 +13-15,14-42 +20-21,21-53 +76-95,77-96 +41-41,48-53 +72-82,71-81 +14-68,91-99 +41-82,83-83 +13-13,12-51 +26-96,27-93 +2-92,93-93 +1-40,4-39 +10-66,11-84 +9-10,9-94 +37-67,70-84 +11-69,8-68 +15-81,16-81 +75-89,82-95 +81-81,1-80 +7-99,99-99 +16-62,49-62 +25-90,25-89 +19-78,18-86 +56-62,59-63 +50-52,4-22 +1-6,7-85 +30-31,31-51 +40-50,50-50 +73-98,72-72 +84-87,72-98 +81-81,4-80 +14-61,11-61 +12-13,13-72 +28-30,18-40 +37-67,37-96 +2-98,3-98 +6-34,33-65 +18-37,18-85 +6-78,6-39 +21-43,44-71 +24-24,23-74 +46-85,46-86 +18-54,1-54 +39-96,28-38 +13-89,89-89 +74-99,75-97 +47-92,38-91 +13-13,14-71 +76-78,77-96 +11-77,76-76 +5-76,4-75 +5-25,24-99 +27-96,20-28 +32-76,32-75 +28-57,2-29 +1-96,99-99 +18-30,31-48 +84-84,17-84 +21-41,4-22 +12-31,12-78 +27-51,41-52 +13-74,73-94 +2-6,6-44 +54-90,90-90 +16-19,18-56 +8-96,11-97 +74-75,70-75 +1-80,2-80 +5-22,5-32 +31-50,30-34 +20-95,17-17 +11-19,20-84 +62-62,39-62 +18-34,33-98 +23-35,37-59 +92-92,10-92 +43-67,24-78 +56-56,28-56 +36-95,36-94 +9-63,17-64 +62-93,84-94 +6-63,5-62 +9-10,2-9 +55-64,64-96 +31-90,31-37 +11-92,10-91 +27-95,10-95 +52-65,52-66 +87-87,80-87 +4-46,45-45 +45-45,32-45 +33-96,96-97 +40-60,41-65 +24-24,21-25 +19-85,4-32 +22-93,92-94 +97-99,2-97 +47-84,6-83 +95-97,5-95 +23-49,21-24 +57-59,58-75 +44-44,45-97 +3-9,7-14 +1-70,2-71 +11-85,12-12 +14-59,3-13 +71-91,35-90 +2-89,1-88 +3-93,3-96 +28-30,27-29 +14-37,1-15 +14-89,13-15 +4-63,19-63 +2-18,18-48 +37-98,31-98 +5-5,6-95 +52-52,53-73 +75-78,78-78 +1-99,99-99 +44-69,68-69 +83-83,49-83 +29-73,6-29 +87-87,88-93 +6-93,1-7 +12-93,13-94 +2-27,2-81 +34-83,5-82 +95-99,5-96 +60-74,45-56 +19-81,18-80 +10-68,8-67 +15-98,46-54 +49-93,48-92 +11-65,64-64 +97-97,1-97 +41-86,42-94 +32-47,3-47 +2-64,1-85 +68-75,72-86 +1-89,6-44 +3-88,2-87 +19-50,18-20 +8-39,4-7 +15-86,15-86 +74-74,36-74 +25-48,26-49 +36-98,35-98 +73-75,38-74 +11-52,11-39 +17-75,16-88 +3-96,2-95 +23-48,6-47 +29-37,21-73 +4-91,91-91 +31-95,31-32 +30-90,30-89 +11-64,65-65 +12-72,13-72 +84-84,16-83 +9-77,5-9 +72-98,38-41 +37-80,36-36 +48-48,47-98 +61-73,62-74 +46-53,45-47 +8-93,2-93 +35-61,35-40 +7-16,15-16 +67-79,21-68 +93-99,61-94 +9-23,3-9 +66-87,26-87 +97-99,97-97 +2-21,21-22 +1-84,2-84 +36-87,86-87 +92-94,7-93 +50-97,44-50 +19-69,18-88 +44-57,31-66 +87-87,79-87 +56-85,55-55 +42-93,80-94 +6-66,6-67 +9-82,9-10 +53-60,52-59 +23-86,17-24 +6-44,43-72 +52-66,1-88 +3-88,3-34 +35-75,75-96 +39-54,37-37 +2-41,23-42 +56-56,6-55 +31-32,32-57 +61-61,8-61 +55-96,95-96 +32-76,14-75 +9-44,13-70 +9-30,31-31 +6-96,2-6 +26-53,23-23 +23-80,79-81 +6-65,17-65 +23-32,35-97 +57-66,57-68 +13-60,13-14 +30-52,18-29 +33-46,33-45 +45-69,46-68 +71-96,97-99 +58-60,18-59 +29-30,29-95 +34-37,37-70 +5-90,6-90 +52-96,24-37 +10-79,65-82 +3-80,81-81 +66-93,94-95 +6-25,6-72 +8-9,9-98 +6-98,4-7 +26-80,19-23 +75-75,7-75 +8-92,11-93 +13-96,12-98 +64-66,28-65 +23-93,47-96 +62-75,53-60 +42-42,34-43 +1-66,2-65 +22-46,21-46 +2-4,4-83 +8-9,8-41 +68-91,90-92 +61-94,95-95 +44-66,35-67 +25-94,93-95 +71-88,69-86 +5-48,5-47 +17-81,52-81 +4-84,1-3 +73-73,72-72 +87-87,26-86 +83-83,14-83 +12-88,11-12 +9-9,10-84 +14-88,15-89 +66-77,78-85 +64-85,94-99 +81-82,48-81 +1-93,1-94 +11-98,11-12 +52-89,37-89 +35-69,69-91 +25-59,24-59 +9-42,1-1 +94-97,90-97 +49-93,48-61 +24-24,25-76 +5-14,14-64 +12-83,29-84 +16-68,16-83 +43-48,38-49 +46-79,4-45 +74-94,34-65 +33-45,24-61 +3-82,15-83 +26-54,82-88 +63-63,38-62 +16-97,15-97 +7-88,1-98 +91-96,3-87 +28-45,44-44 +36-77,14-77 +25-81,82-82 +28-28,27-77 +6-33,32-49 +14-34,3-15 +13-98,12-94 +5-11,9-12 +54-56,13-55 +26-90,25-93 +67-88,87-89 +76-98,75-99 +1-85,1-65 +54-70,55-71 +53-87,52-86 +6-92,2-7 +38-90,91-98 +52-67,51-67 +74-93,20-74 +3-87,2-86 +7-27,26-26 +91-97,88-96 +17-25,16-24 +4-91,4-92 +43-56,44-44 +4-79,3-80 +37-95,36-96 +5-19,18-34 +9-58,73-73 +23-27,23-27 +68-70,69-96 +3-78,2-51 +6-94,7-73 +93-96,76-93 +88-99,20-88 +11-89,90-96 +5-98,99-99 +23-34,33-93 +10-23,5-22 +44-44,45-93 +2-98,2-97 +64-96,59-64 +13-13,14-98 +21-94,44-99 +71-95,94-94 +56-98,55-98 +18-66,19-67 +3-92,3-93 +74-93,69-69 +68-68,14-67 +45-97,74-98 +21-89,46-91 +10-91,11-74 +14-41,5-45 +3-39,39-80 +20-75,20-76 +21-92,15-20 +27-28,26-36 +57-75,57-80 +18-87,17-86 +23-57,22-56 +63-82,59-80 +99-99,1-97 +94-94,14-93 +22-82,21-98 +68-75,41-67 +39-77,38-76 +7-68,68-68 +15-18,18-79 +79-89,78-80 +26-68,26-51 +31-77,3-32 +29-97,11-11 +4-91,4-63 +8-90,8-98 +36-58,23-58 +14-46,13-34 +37-97,37-98 +4-4,5-21 +20-89,19-89 +42-43,43-87 +49-50,48-48 +20-86,98-98 +12-19,12-16 +58-59,40-58 +48-79,47-48 +97-99,32-98 +22-98,7-23 +16-88,17-83 +68-96,97-98 +11-50,30-64 +1-96,2-97 +44-96,44-97 +66-66,7-66 +9-42,10-42 +89-93,48-90 +6-7,6-64 +90-92,8-91 +8-12,13-74 +25-64,25-65 +62-70,63-72 +3-99,8-73 +2-79,1-78 +98-99,3-97 +35-76,6-75 +74-78,73-73 +87-97,64-87 +17-91,16-91 +2-71,8-72 +79-95,32-93 +34-97,24-35 +85-87,46-86 +36-72,72-73 +4-7,7-79 +10-11,10-80 +88-89,7-89 +15-52,52-52 +33-65,64-86 +46-48,48-63 +25-40,24-24 +53-81,11-53 +8-9,9-94 +97-97,19-97 +4-84,84-95 +22-41,40-59 +20-55,56-99 +9-46,47-47 +2-4,3-88 +31-73,30-30 +26-87,12-22 +3-45,1-44 +7-24,7-83 +11-81,8-80 +13-16,10-15 +18-44,43-44 +3-4,4-78 +87-91,2-87 +2-89,22-89 +11-93,10-10 +6-99,1-99 +12-95,12-94 +26-58,39-97 +52-98,52-97 +49-71,50-85 +41-49,41-45 +37-89,38-90 +2-90,4-80 +42-92,95-98 +58-82,57-82 +25-70,6-71 +42-96,44-96 +21-21,20-95 +9-97,8-99 +20-21,12-21 +44-93,97-98 +44-98,45-64 +19-19,18-93 +65-65,66-72 +8-42,3-7 +12-83,11-82 +19-75,63-76 +32-60,32-32 +12-90,90-99 +59-60,17-59 +8-75,7-31 +59-79,58-79 +14-83,15-84 +28-29,28-30 +60-98,1-98 +33-45,33-64 +20-20,20-20 +36-94,35-93 +13-31,31-31 +28-30,2-29 +81-81,82-86 +76-78,79-79 +54-80,54-70 +61-64,65-99 +5-11,11-89 +16-54,17-26 +2-56,2-3 +42-76,77-77 +7-82,7-81 +37-54,19-38 +77-96,71-76 +16-85,84-86 +8-93,1-9 +37-87,36-77 +54-71,19-71 +20-29,20-97 +82-96,83-96 +48-81,47-81 +4-36,5-37 +8-59,7-9 +91-99,62-98 +12-80,86-90 +25-95,24-25 +32-94,94-94 +22-97,98-98 +16-92,16-17 +84-84,74-84 +4-86,2-85 +23-56,23-57 +31-31,32-99 +14-96,13-15 +50-81,34-41 +11-44,11-11 +7-38,6-38 +10-77,10-96 +50-86,87-87 +5-87,5-86 +91-91,42-90 +19-97,97-97 +22-77,21-27 +7-7,6-81 +79-93,18-92 +39-93,59-98 +1-84,84-84 +30-35,30-48 +1-2,3-47 +4-88,3-5 +4-90,90-91 +3-95,4-98 +28-31,5-32 +39-93,4-98 +99-99,1-99 +4-96,3-95 +58-63,58-63 +44-91,33-44 +27-27,28-89 +16-84,78-85 +2-22,17-23 +30-78,77-84 +17-57,18-57 +2-99,1-3 +2-31,35-43 +74-74,17-75 +46-92,87-93 +6-97,5-96 +4-18,19-90 +31-33,32-57 +26-57,27-58 +3-78,1-1 +68-69,34-69 +66-66,26-66 +11-12,14-61 +5-6,5-76 +14-96,96-97 +4-70,4-69 +69-95,70-70 +8-93,5-8 +35-87,1-35 +51-62,51-61 +52-69,51-51 +14-69,24-70 +20-91,80-90 +74-88,75-88 +3-72,1-72 +7-67,6-65 +31-47,32-48 +99-99,11-98 +7-17,7-14 +55-88,56-99 +29-31,28-30 +65-65,66-66 +9-76,33-73 +51-72,19-52 +2-15,2-98 +78-78,24-77 +41-95,96-96 +23-94,22-23 +23-24,24-97 +34-34,35-94 +7-81,7-39 +9-17,16-91 +11-23,10-10 +17-66,67-70 +28-68,27-27 +65-91,90-98 +43-79,11-44 +15-83,48-82 +13-84,13-83 +5-5,7-71 +48-63,49-64 +75-76,28-76 +23-95,23-23 +18-95,19-96 +45-86,87-87 +2-29,30-82 +15-66,14-66 +23-94,94-97 +15-88,19-74 +1-44,13-45 +24-25,24-45 +43-49,54-67 +6-63,5-63 +70-99,70-92 +45-95,76-96 +78-96,98-98 +3-3,5-75 +3-75,2-81 +15-19,11-39 +47-70,54-70 +6-92,6-91 +39-88,40-89 +1-76,66-93 +89-89,4-88 +18-94,8-18 +6-81,7-66 +87-94,88-90 +10-29,30-30 +6-73,3-77 +80-84,79-81 +47-48,47-53 +44-61,44-57 +53-60,52-61 +56-65,56-66 +25-52,52-74 +5-6,7-93 +22-99,21-22 +3-14,2-12 +4-42,1-4 +22-85,23-86 +25-56,33-56 +16-84,84-85 +51-57,9-50 +8-91,90-90 +30-85,19-31 +15-66,46-67 +17-31,16-31 +24-94,23-24 +54-54,55-84 +41-98,42-96 +89-89,42-88 +25-72,26-45 +25-96,6-97 +6-85,3-6 +71-78,43-72 +3-74,3-73 +5-49,8-50 +5-5,6-86 +4-39,39-73 +85-87,84-86 +11-62,10-78 +61-86,62-85 +7-32,32-60 +79-79,10-79 +17-72,38-73 +13-86,12-85 +6-6,2-4 +47-49,1-48 +74-98,12-99 +1-71,1-27 +29-80,29-81 +54-94,53-94 +18-74,73-82 +95-95,7-95 +62-62,62-62 +6-93,7-94 +43-87,43-98 +17-89,9-93 +4-72,1-3 +22-45,45-95 +2-2,3-92 +75-77,29-74 +11-98,97-98 +70-70,69-69 +36-41,35-36 +6-12,10-13 +65-98,65-99 +1-97,2-98 +33-89,12-89 +24-69,18-18 +3-65,2-66 +14-14,15-80 +18-70,2-5 +8-59,9-60 +52-53,8-53 +72-89,39-72 +18-81,82-82 +1-95,1-94 +57-73,92-99 +10-20,9-19 +44-68,56-68 +18-22,19-27 +28-65,28-38 +63-87,47-86 +8-87,9-88 +26-55,25-95 +28-96,13-27 +38-38,6-37 +33-37,40-73 +72-95,95-95 +61-93,28-53 +73-85,86-86 +2-93,94-94 +42-97,43-43 +12-99,11-13 +11-94,12-86 +63-87,86-87 +47-48,46-47 +91-91,7-91 +8-21,22-45 +49-57,50-58 +10-11,11-91 +41-47,36-47 +30-64,30-65 +1-28,24-24 +3-12,1-3 +60-76,57-59 +15-65,16-16 +64-64,5-64 +7-99,6-6 +48-98,69-99 +97-99,1-97 +66-66,10-67 +5-99,4-99 +32-86,85-88 +2-99,2-2 +3-35,35-44 +62-62,37-61 +5-53,4-54 +1-98,98-99 +31-98,48-99 +3-5,4-88 +47-54,36-53 +44-91,69-92 +52-65,66-98 +10-72,62-71 +6-98,6-97 +53-53,54-80 +2-96,2-52 +10-17,11-94 +25-90,25-30 +55-71,55-70 +44-66,66-67 +83-87,82-87 +34-76,1-34 +35-38,41-54 +64-98,1-98 +58-58,58-71 +56-89,89-99 +55-73,37-79 +15-97,18-22 +4-97,4-98 +8-62,34-95 +1-4,5-51 +37-65,51-95 +22-87,51-87 +29-40,28-28 +21-83,21-83 +24-26,25-46 +23-68,24-69 +69-77,78-78 +42-92,41-72 +37-78,28-77 +2-90,2-89 +5-9,8-50 +4-82,3-89 +47-49,48-82 +10-99,11-94 +19-42,10-18 +15-48,7-16 +21-86,21-22 +69-69,38-69 +24-27,32-92 +30-94,30-78 +35-36,35-56 +85-87,86-86 +70-70,71-97 +7-7,8-84 +7-83,83-83 +9-87,10-88 +1-14,13-92 +2-93,92-94 +37-45,45-84 +6-98,5-94 +5-74,2-4 +5-23,23-57 +14-77,3-76 +5-84,3-83 +22-52,12-52 +18-71,19-72 +13-91,13-90 +95-95,19-95 +4-39,3-38 +5-71,2-3 +52-52,3-53 +4-81,2-3 +77-98,49-98 +48-48,37-47 +13-86,14-86 +9-99,10-99 +89-98,22-89 +66-73,66-80 +12-12,13-98 +4-5,6-23 +79-99,79-80 +40-72,4-41 +70-74,69-76 +15-16,16-37 +22-78,1-96 +66-79,66-80 +2-92,92-93 +80-95,81-90 +34-37,32-37 +17-34,30-49 +16-98,26-99 +11-12,11-23 +2-72,72-72 +48-50,31-54 +75-90,75-82 +4-20,21-26 +3-3,2-85 +1-58,2-59 +3-94,3-95 +55-87,54-86 +22-81,33-80 +14-80,15-15 +3-71,71-72 +60-60,60-70 +25-25,25-95 +20-62,20-61 +64-84,84-84 +5-98,5-98 +3-10,12-71 +55-77,55-74 +12-79,78-79 +23-36,23-35 +16-42,42-42 +27-85,26-26 +3-71,71-71 +87-94,29-86 +2-78,77-79 +22-86,22-85 +7-84,8-85 +63-67,64-70 +28-45,28-29 +23-74,74-75 +6-50,50-74 +49-68,51-59 +50-50,49-63 +7-7,7-83 +11-53,54-54 +5-89,5-89 +7-88,6-87 +8-58,9-58 +5-6,5-71 +16-79,7-17 +98-98,24-96 +49-49,48-86 +20-64,40-96 +50-89,90-90 +13-72,14-72 +69-70,69-93 +13-96,12-99 +21-47,36-47 +34-34,19-34 +3-82,5-83 +26-46,27-47 +39-91,6-88 +8-97,8-92 +7-8,7-82 +80-81,37-80 +33-44,99-99 +17-36,7-18 +7-99,98-98 +36-78,77-79 +24-67,24-66 +1-68,9-67 +60-60,61-90 +90-91,42-90 +3-94,3-95 +16-96,16-82 +2-4,5-92 +6-93,7-87 +2-4,4-44 +62-77,57-77 +3-99,64-99 +28-89,27-27 +53-53,26-52 +14-76,61-77 +33-94,32-33 +37-42,38-42 +94-95,55-68 +34-58,3-35 +13-48,35-45 +4-54,3-99 +11-12,11-97 +27-88,95-99 +32-92,33-74 +21-72,6-21 +2-98,2-99 +5-96,4-96 +1-67,7-49 +53-89,11-12 +30-36,29-34 +73-96,72-96 +31-68,16-31 +31-51,50-59 +90-98,76-93 +3-61,3-61 +42-47,8-28 +10-85,9-10 +50-51,51-82 +83-90,76-89 +2-70,3-21 +46-74,46-76 +4-67,1-3 +1-94,94-94 +2-4,3-51 +12-51,5-12 +18-32,18-33 +29-84,15-83 diff --git a/rust/src/day4.rs b/rust/src/day4.rs new file mode 100644 index 0000000..44af463 --- /dev/null +++ b/rust/src/day4.rs @@ -0,0 +1,60 @@ +use std::fs::File; +use std::io::BufRead; +use std::io::BufReader; + +use regex::Regex; + +#[derive(Debug, PartialEq, Eq)] +struct ElfAssignment { + first_range_start: u8, + first_range_end: u8, + second_range_start: u8, + second_range_end: u8, +} + +pub fn run() { + let file = File::open("resources/day4input.txt").expect("Input file not found."); + let reader = BufReader::new(file); + + let re = Regex::new(r"^(\d{1,2})-(\d{1,2}),(\d{1,2})-(\d{1,2})$").unwrap(); + let assignments: Vec> = reader + .lines() + .map(|line| { + let unwrapped_line = line.unwrap(); + let cap = re.captures(unwrapped_line.as_str()).unwrap(); + let groups = (cap.get(1), cap.get(2), cap.get(3), cap.get(4)); + match groups { + (Some(r1), Some(r2), Some(r3), Some(r4)) => Some(ElfAssignment { + first_range_start: r1.as_str().parse::().unwrap(), + first_range_end: r2.as_str().parse::().unwrap(), + second_range_start: r3.as_str().parse::().unwrap(), + second_range_end: r4.as_str().parse::().unwrap(), + }), + _ => None, + } + }) + .collect(); + + let mut total_overlap: u32 = 0; + let mut partial_overlap: u32 = 0; + + for assignment in assignments { + let a = assignment.unwrap(); + if (a.first_range_start >= a.second_range_start + && a.first_range_end <= a.second_range_end) || + (a.second_range_start >= a.first_range_start + && a.second_range_end <= a.first_range_end) { + total_overlap += 1; + } + + if ((a.first_range_start >= a.second_range_start && a.first_range_start <= a.second_range_end) || + (a.first_range_end >= a.second_range_start && a.first_range_end <= a.second_range_end)) || + ((a.second_range_start >= a.first_range_start && a.second_range_start <= a.first_range_end) || + (a.second_range_end >= a.first_range_start && a.second_range_end <= a.first_range_end)) { + partial_overlap += 1; + } + } + + println!("Day 4 Answer 1: {:?}", total_overlap); + println!("Day 4 Answer 2: {:?}", partial_overlap); +} \ No newline at end of file diff --git a/rust/src/main.rs b/rust/src/main.rs index 6f8d917..40008e2 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -3,6 +3,7 @@ use std::env; mod day1; mod day2; mod day3; +mod day4; fn main() { let args: Vec = env::args().collect(); @@ -13,6 +14,7 @@ fn main() { "day1" => day1::run(), "day2" => day2::run(), "day3" => day3::run(), + "day4" => day4::run(), _ => eprintln!("error: invalid day") } },