Day 4
This commit is contained in:
parent
b9d6d9ad9c
commit
7ad7138e93
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "day4"
|
||||
version = "0.1.0"
|
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "day4"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
|
@ -0,0 +1,101 @@
|
|||
fn main() {
|
||||
let min = [1, 9, 3, 6, 5, 1];
|
||||
let max = [6, 4, 9, 7, 2, 9];
|
||||
|
||||
let mut matches = 0;
|
||||
let mut i = min.clone();
|
||||
loop {
|
||||
// Check for a adjacents
|
||||
if i[0] == i[1] ||
|
||||
i[1] == i[2] ||
|
||||
i[2] == i[3] ||
|
||||
i[3] == i[4] ||
|
||||
i[4] == i[5]
|
||||
{
|
||||
// Check for incrementing
|
||||
if i[0] <= i[1] &&
|
||||
i[1] <= i[2] &&
|
||||
i[2] <= i[3] &&
|
||||
i[3] <= i[4] &&
|
||||
i[4] <= i[5]
|
||||
{
|
||||
//println!("{:?} matches", i);
|
||||
matches += 1;
|
||||
}
|
||||
}
|
||||
let mut x = 5;
|
||||
loop {
|
||||
i[x] += 1;
|
||||
if i[x] >= 10 {
|
||||
i[x] -= 10;
|
||||
x -= 1;
|
||||
continue
|
||||
}
|
||||
break;
|
||||
}
|
||||
if i[0] >= max[0] &&
|
||||
i[1] >= max[1] &&
|
||||
i[2] >= max[2] &&
|
||||
i[3] >= max[3] &&
|
||||
i[4] >= max[4] &&
|
||||
i[5] >= max[5] {
|
||||
break;
|
||||
}
|
||||
}
|
||||
println!("[Part 1] There are {} potential matches", matches);
|
||||
|
||||
i = min.clone();
|
||||
matches = 0;
|
||||
loop {
|
||||
// Check for incrementing
|
||||
if i[0] <= i[1] &&
|
||||
i[1] <= i[2] &&
|
||||
i[2] <= i[3] &&
|
||||
i[3] <= i[4] &&
|
||||
i[4] <= i[5]
|
||||
{
|
||||
// Check for groups
|
||||
let mut idx = 0;
|
||||
let mut has_two_chain = false;
|
||||
let mut chain_size = 1;
|
||||
while idx < 5 {
|
||||
if i[idx] == i[idx+1] {
|
||||
chain_size += 1;
|
||||
idx += 1;
|
||||
}
|
||||
else {
|
||||
if chain_size == 2 {
|
||||
has_two_chain = true;
|
||||
}
|
||||
chain_size = 1;
|
||||
idx += 1;
|
||||
}
|
||||
}
|
||||
if chain_size == 2 {
|
||||
has_two_chain = true;
|
||||
}
|
||||
if has_two_chain {
|
||||
matches += 1;
|
||||
}
|
||||
}
|
||||
let mut x = 5;
|
||||
loop {
|
||||
i[x] += 1;
|
||||
if i[x] >= 10 {
|
||||
i[x] -= 10;
|
||||
x -= 1;
|
||||
continue
|
||||
}
|
||||
break;
|
||||
}
|
||||
if i[0] >= max[0] &&
|
||||
i[1] >= max[1] &&
|
||||
i[2] >= max[2] &&
|
||||
i[3] >= max[3] &&
|
||||
i[4] >= max[4] &&
|
||||
i[5] >= max[5] {
|
||||
break;
|
||||
}
|
||||
}
|
||||
println!("[Part 2] There are {} potential matches", matches);
|
||||
}
|
Reference in New Issue