Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
028da62e25 | |||
a83326d9c4 |
1000
src/input.txt
Normal file
1000
src/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
62
src/main.rs
62
src/main.rs
@ -1,3 +1,61 @@
|
|||||||
fn main() {
|
// https://adventofcode.com/2022/day/4
|
||||||
println!("Hello, world!");
|
|
||||||
|
use std::ops::Range;
|
||||||
|
|
||||||
|
const DATA: &'static str = include_str!("input.txt");
|
||||||
|
|
||||||
|
fn parse_range(string: &str) -> Range<i32>
|
||||||
|
{
|
||||||
|
let (left, right) = string.split_once("-").unwrap();
|
||||||
|
|
||||||
|
left.parse().unwrap() .. right.parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn part1()
|
||||||
|
{
|
||||||
|
let mut pairs_fully_contained = 0;
|
||||||
|
for slice in DATA.split("\n")
|
||||||
|
{
|
||||||
|
if slice.is_empty() { continue; }
|
||||||
|
|
||||||
|
let (left, right) = slice.split_once(",").expect("Input data is not correctly structured");
|
||||||
|
|
||||||
|
let left_range = parse_range(left);
|
||||||
|
let right_range = parse_range(right);
|
||||||
|
|
||||||
|
if left_range.end >= right_range.end && left_range.start <= right_range.start
|
||||||
|
{
|
||||||
|
pairs_fully_contained += 1;
|
||||||
|
} else if right_range.end >= left_range.end && right_range.start <= left_range.start
|
||||||
|
{
|
||||||
|
pairs_fully_contained += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("There are {} pairs in which one range is fully contained in the other one", pairs_fully_contained);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2()
|
||||||
|
{
|
||||||
|
let mut overlapping_pairs = 0;
|
||||||
|
for slice in DATA.split("\n")
|
||||||
|
{
|
||||||
|
if slice.is_empty() { continue; }
|
||||||
|
|
||||||
|
let (left, right) = slice.split_once(",").expect("Input data is not correctly structured");
|
||||||
|
|
||||||
|
let left_range = parse_range(left);
|
||||||
|
let right_range = parse_range(right);
|
||||||
|
|
||||||
|
if left_range.start <= right_range.end && right_range.start <= left_range.end
|
||||||
|
{
|
||||||
|
overlapping_pairs += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println!("There are {} pairs where ranges overlap", overlapping_pairs);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
//part1()
|
||||||
|
part2()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user