42 lines
960 B
Rust
42 lines
960 B
Rust
use std::fs::File;
|
|
use std::io::Read;
|
|
use std::prelude::v1::Vec;
|
|
use std::collections::HashMap;
|
|
|
|
fn main() {
|
|
let mut f = File::open("input").expect("file not found");
|
|
|
|
let mut contents = String::new();
|
|
f.read_to_string(&mut contents).expect("something went wrong reading the file");
|
|
|
|
let lines: Vec<&str> = contents.split("\n").collect();
|
|
|
|
println!("{}", count_doubles_and_triples(lines));
|
|
}
|
|
|
|
fn count_doubles_and_triples(lines: Vec<&str>) -> i32 {
|
|
let mut doubles = 0;
|
|
let mut triples = 0;
|
|
|
|
for line in lines{
|
|
let mut counts = HashMap::new();
|
|
|
|
for character in line.chars() {
|
|
*counts.entry(character).or_insert(0) += 1;
|
|
}
|
|
|
|
if counts.values().any(|&count| count == 2) {
|
|
doubles += 1;
|
|
}
|
|
|
|
if counts.values().any(|&count| count == 3) {
|
|
triples += 1;
|
|
}
|
|
}
|
|
|
|
triples*doubles
|
|
}
|
|
|
|
fn find_common_letters(lines: Vec<&str>) -> Vec<char>{
|
|
|
|
} |