day01-2 tuple

This commit is contained in:
Johannes
2018-12-01 17:54:30 +01:00
parent 2d64eefc09
commit 0494dee19d

View File

@@ -13,21 +13,18 @@ pub fn task1() {
pub fn task2() { pub fn task2() {
let contents = utils::read_file("input/day01.txt"); let contents = utils::read_file("input/day01.txt");
let mut seen: HashSet<i32> = HashSet::new(); let seen: HashSet<i32> = vec![0].into_iter().collect();
seen.insert(0); let start_state = (seen, 0);
let start_state = (std::cell::RefCell::new(seen), std::cell::RefCell::new(0));
let final_state = contents let final_state = contents
.lines() .lines()
.map(|line| line.parse::<i32>().unwrap()) .map(|line| line.parse::<i32>().unwrap())
.cycle() .cycle()
.scan(&start_state, |(hash_set, current_freq), freq_change| { .scan(start_state, |state, freq_change| {
*current_freq.borrow_mut() += freq_change; state.1 += freq_change;
if hash_set.borrow_mut().contains(&current_freq.borrow()) { if state.0.insert(state.1) {
Some((current_freq.borrow(), true)) Some((state.1, false))
} else { } else {
let value: i32 = *current_freq.borrow_mut(); Some((state.1, true))
hash_set.borrow_mut().insert(value);
Some((current_freq.borrow(), false))
} }
}).find(|state| state.1); }).find(|state| state.1);