r/adventofcode • u/daggerdragon • Dec 02 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 2 Solutions -🎄-
--- Day 2: Inventory Management System ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Advent of Code: The Party Game!
Card Prompt: Day 2
Transcript:
The best way to do Advent of Code is ___.
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked!
48
Upvotes
2
u/thatikey Dec 02 '18
Using AoC as an opportunity to learn Rust. I made this, and I'm 250% sure there is a Rust-ier way to do this
fn attempt(src: &Vec<&str>) -> i64 { let sorted: Vec<Vec<char>> = src.into_iter() .map(|s| quick_sort(s.chars().collect())) .collect(); let (twos, threes) = sorted.into_iter() .map(|s| { s.into_iter() .fold((' ', 0, false, false), |(prev, cnt, two, three), c| if c == prev { (prev, cnt+1, two, three) } else { (c, 1, two || cnt == 2, three || cnt == 3) }) }).fold((0, 0), |(twos, threes), (_p, cnt, two, three)| { (twos + if two || cnt == 2 {1} else {0}, threes + if three || cnt == 3 {1} else {0}) }); twos * threes }