From 0494dee19d95d1da0936691f4c60d415889fb5b7 Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 1 Dec 2018 17:54:30 +0100 Subject: [PATCH] day01-2 tuple --- src/tasks/day01.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/tasks/day01.rs b/src/tasks/day01.rs index ec7e19e..f70747c 100644 --- a/src/tasks/day01.rs +++ b/src/tasks/day01.rs @@ -13,21 +13,18 @@ pub fn task1() { pub fn task2() { let contents = utils::read_file("input/day01.txt"); - let mut seen: HashSet = HashSet::new(); - seen.insert(0); - let start_state = (std::cell::RefCell::new(seen), std::cell::RefCell::new(0)); + let seen: HashSet = vec![0].into_iter().collect(); + let start_state = (seen, 0); let final_state = contents .lines() .map(|line| line.parse::().unwrap()) .cycle() - .scan(&start_state, |(hash_set, current_freq), freq_change| { - *current_freq.borrow_mut() += freq_change; - if hash_set.borrow_mut().contains(¤t_freq.borrow()) { - Some((current_freq.borrow(), true)) + .scan(start_state, |state, freq_change| { + state.1 += freq_change; + if state.0.insert(state.1) { + Some((state.1, false)) } else { - let value: i32 = *current_freq.borrow_mut(); - hash_set.borrow_mut().insert(value); - Some((current_freq.borrow(), false)) + Some((state.1, true)) } }).find(|state| state.1);