Second task
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
use std::fs;
|
||||
|
||||
fn main() {
|
||||
let contents = fs::read_to_string("input").unwrap();
|
||||
let mut count1 = 0;
|
||||
let mut count2 = 0;
|
||||
for line in contents.lines() {
|
||||
let v: Vec<_> = line.split(':').collect();
|
||||
let rule = v[0].split(' ').collect::<Vec<_>>();
|
||||
let numbers = rule[0].split('-').collect::<Vec<_>>();
|
||||
let (start, end) = (
|
||||
numbers[0].parse::<usize>().unwrap(),
|
||||
numbers[1].parse::<usize>().unwrap(),
|
||||
);
|
||||
let c = rule[1];
|
||||
let password = &v[1][1..];
|
||||
// Part 1
|
||||
let char_count = password.matches(c).count();
|
||||
if start <= char_count && char_count <= end {
|
||||
count1 += 1;
|
||||
}
|
||||
// Part 2
|
||||
let (start, end) = (start - 1, end - 1);
|
||||
if password[start..start + 1] == *c {
|
||||
if password[end..end + 1] != *c {
|
||||
count2 += 1;
|
||||
}
|
||||
} else {
|
||||
if password[end..end + 1] == *c {
|
||||
count2 += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
println!("{} {}", count1, count2);
|
||||
}
|
||||
Reference in New Issue
Block a user