Add '2018/' from commit '4f35fa85150c24c3c606851be3a8cd5efd6f5500'
git-subtree-dir: 2018 git-subtree-mainline:5ccd921b23
git-subtree-split:4f35fa8515
This commit is contained in:
48
2018/02/part1.rs
Normal file
48
2018/02/part1.rs
Normal file
@@ -0,0 +1,48 @@
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::io::prelude::*;
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let file = match File::open("input") {
|
||||
Err(why) => panic!("couldn't open input: {}", Error::description(&why)),
|
||||
Ok(file) => file,
|
||||
};
|
||||
|
||||
let reader = BufReader::new(file);
|
||||
let lines = reader.lines();
|
||||
|
||||
for result in lines {
|
||||
let l = result.unwrap();
|
||||
let mut freq = HashMap::new();
|
||||
let mut is2 = false;
|
||||
let mut is3 = false;
|
||||
|
||||
for ch in l.chars() {
|
||||
let count = freq.entry(ch).or_insert(0);
|
||||
*count += 1;
|
||||
}
|
||||
|
||||
for (_ch, count) in freq {
|
||||
if count == 2 {
|
||||
is2 = true;
|
||||
}
|
||||
if count == 3 {
|
||||
is3 = true;
|
||||
}
|
||||
}
|
||||
|
||||
if is2 {
|
||||
count2+=1;
|
||||
}
|
||||
|
||||
if is3 {
|
||||
count3+=1;
|
||||
}
|
||||
}
|
||||
|
||||
println!("2: {} 3: {} 2*3: {}", count2, count3, count2 * count3);
|
||||
|
||||
Ok(())
|
||||
}
|
33
2018/02/part2.rs
Normal file
33
2018/02/part2.rs
Normal file
@@ -0,0 +1,33 @@
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::io::prelude::*;
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let mut f = File::open("input")?;
|
||||
let mut data = String::new();
|
||||
|
||||
f.read_to_string(&mut data)?;
|
||||
|
||||
for lineA in data.lines() {
|
||||
for lineB in data.lines() {
|
||||
let mut a = lineA.chars();
|
||||
let mut b = lineB.chars();
|
||||
let mut diffCount = 0;
|
||||
let mut pairs = a.zip(b);
|
||||
|
||||
for (aChar, bChar) in pairs {
|
||||
if aChar != bChar {
|
||||
diffCount += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if diffCount == 1 {
|
||||
println!("lineA: {} lineB: {}", lineA, lineB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
Reference in New Issue
Block a user