fn main() { let doors = vec![false; 100] .iter_mut() .enumerate() .map(|(door, door_state)| { (1..100) .into_iter() .filter(|pass| (door + 1) % pass == 0) .map(|_| { *door_state = !*door_state; *door_state }) .last() .unwrap() }) .collect::>(); println!("{:?}", doors); }