Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main() {
- let input = include_str!("../input.txt").trim();
- let time = std::time::Instant::now();
- let mut memory = input.chars().enumerate()
- .map(|(i, c)| {
- if i % 2 == 0 {
- vec![Some(i as i32 / 2); c.to_string().parse::<usize>().unwrap()]
- } else {
- vec![None; c.to_string().parse::<usize>().unwrap()]
- }
- })
- .into_iter()
- .flatten()
- .collect::<Vec<Option<i32>>>();
- let mut j = memory.len() - 1;
- for i in 0..memory.len() {
- if j <= i {
- break;
- }
- if memory[i].is_some() {
- continue;
- }
- while memory[j].is_none() {
- j -= 1;
- }
- memory.swap(i, j);
- j -= 1;
- }
- let sum: i64 = memory.iter().enumerate().map(|(i, m)| {
- if let Some(s) = m {
- *s as i64 * i as i64
- } else {
- 0_i64
- }
- }).sum();
- println!("Time elapsed: {:?}", time.elapsed());
- println!("Sum: {}", sum);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement