1 file changed
+8
-8
+8
-8
@@ -8,17 +8,17 @@ fn play_speaking_game(input: &[i64], n: usize) -> i64 {
|
|||||||
let mut seen: HashMap<i64, usize> = HashMap::new();
|
let mut seen: HashMap<i64, usize> = HashMap::new();
|
||||||
let mut last_insert: Option<usize> = None;
|
let mut last_insert: Option<usize> = None;
|
||||||
|
|
||||||
input.iter().enumerate().for_each(|(i, n)| {
|
input.iter().enumerate().for_each(|(turn, num)| {
|
||||||
last_insert = seen.insert(*n, i);
|
last_insert = seen.insert(*num, turn);
|
||||||
});
|
});
|
||||||
|
|
||||||
(seen.len()..n).fold(*input.last().unwrap(), |_, step| {
|
(seen.len()..n).fold(*input.last().unwrap(), |_, turn| {
|
||||||
let num: i64 = match last_insert {
|
let num = match last_insert {
|
||||||
Some(prev_step) => (step - 1 - prev_step) as i64,
|
Some(prev_turn) => (turn - 1 - prev_turn),
|
||||||
None => 0_i64,
|
None => 0,
|
||||||
};
|
} as i64;
|
||||||
|
|
||||||
last_insert = seen.insert(num, step);
|
last_insert = seen.insert(num, turn);
|
||||||
num
|
num
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user