mirror of
https://github.com/RussellChamp/advent-of-code-2016.git
synced 2026-10-27 23:32:30 +00:00
Finished a few more
This commit is contained in:
1 parent
e91f81a898
commit
102b456eaf
8 files changed
+344
-25
No files matched your search
Generated
+4
@@ -0,0 +1,4 @@
|
||||
[root]
|
||||
name = "day06"
|
||||
version = "0.1.0"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "day06"
|
||||
version = "0.1.0"
|
||||
authors = ["Russell Champoux <russell.champoux@thomsonreuters.com>"]
|
||||
|
||||
[dependencies]
|
||||
@@ -0,0 +1,99 @@
|
||||
use std::io::Read;
|
||||
use std::fs::File;
|
||||
//use std::collections::HashMap;
|
||||
|
||||
fn part_1(input: &String) {
|
||||
// This would have been great if it actually worked.
|
||||
// let values = input.lines()
|
||||
// .map(|l| l
|
||||
// .trim()
|
||||
// .chars()
|
||||
// .collect::<Vec<_>>()
|
||||
// )
|
||||
// .collect::<Vec<_>>();
|
||||
// println!("first item {:?}", values[0]);
|
||||
// println!("second item {:?}", values[1]);
|
||||
|
||||
// //let mut letters: Vec<String> = vec![String::new(); values[0].len()];
|
||||
// let mut letters: Vec<Vec<char>> = vec![vec![]; values[0].len()];
|
||||
// for v in values {
|
||||
// for (idx, l) in v.iter().enumerate() {
|
||||
// letters[idx].push(*l);
|
||||
// }
|
||||
// }
|
||||
// for (idx, line) in letters.iter().enumerate() {
|
||||
// //println!("Letter {}: {:?}", idx, s);
|
||||
// let mut hash: HashMap<char, i32> = HashMap::new();
|
||||
// let mut largest: (char, i32) = ('a', -1);
|
||||
// for l in line {
|
||||
// match hash.get(l) {
|
||||
// Some(v) => {
|
||||
// v = &(v + 1);
|
||||
// // if v > largest.1 {
|
||||
// // largest = (l, v);
|
||||
// // }
|
||||
// },
|
||||
// None => hash.insert(*l, 1),
|
||||
// }
|
||||
// }
|
||||
|
||||
// //let s: String = l.iter().cloned().collect();
|
||||
// }
|
||||
|
||||
let size = input.lines().nth(0).unwrap().len();
|
||||
print!("Part 1: Answer ");
|
||||
for idx in 0..size {
|
||||
let mut accumulator = [0; 26];
|
||||
for line in input.lines() {
|
||||
let letter = line.chars().nth(idx).unwrap();
|
||||
let letter_idx = letter as u8 - 'a' as u8;
|
||||
accumulator[letter_idx as usize] = accumulator[letter_idx as usize] + 1;
|
||||
//println!("The {}th letter is {} with a value {} - {:?}", idx, letter, letter_idx, accumulator);
|
||||
}
|
||||
let mut biggest = (0, -1); //idx and value
|
||||
for idx in 0..accumulator.len() {
|
||||
if accumulator[idx] > biggest.1 {
|
||||
biggest = (idx, accumulator[idx]);
|
||||
}
|
||||
}
|
||||
let biggest_letter = (biggest.0 as u8 + 'a' as u8) as char;
|
||||
// println!("Accumulator is {:?}", accumulator);
|
||||
// println!("Biggest is {:?} which is {}", biggest, biggest_letter);
|
||||
print!("{}", biggest_letter);
|
||||
}
|
||||
println!(""); //newline
|
||||
}
|
||||
|
||||
fn part_2(input: &String) {
|
||||
let size = input.lines().nth(0).unwrap().len();
|
||||
print!("Part 2: Answer ");
|
||||
for idx in 0..size {
|
||||
let mut accumulator = [0; 26];
|
||||
for line in input.lines() {
|
||||
let letter = line.chars().nth(idx).unwrap();
|
||||
let letter_idx = letter as u8 - 'a' as u8;
|
||||
accumulator[letter_idx as usize] = accumulator[letter_idx as usize] + 1;
|
||||
//println!("The {}th letter is {} with a value {} - {:?}", idx, letter, letter_idx, accumulator);
|
||||
}
|
||||
let mut smallest = (0, <i32>::max_value()); //idx and value
|
||||
for idx in 0..accumulator.len() {
|
||||
if accumulator[idx] > 0 && accumulator[idx] < smallest.1 {
|
||||
smallest = (idx, accumulator[idx]);
|
||||
}
|
||||
}
|
||||
let smallest_letter = (smallest.0 as u8 + 'a' as u8) as char;
|
||||
// println!("Accumulator is {:?}", accumulator);
|
||||
// println!("Smallest is {:?} which is {}", smallest, smallest_letter);
|
||||
print!("{}", smallest_letter);
|
||||
}
|
||||
println!(""); //newline
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut file = File::open("./data").expect("could not open file");
|
||||
let mut input = String::new();
|
||||
file.read_to_string(&mut input).expect("could not read file");
|
||||
|
||||
part_1(&input);
|
||||
part_2(&input);
|
||||
}
|
||||
Reference in new issue
Block a user