diff --git a/src/cal/day22.rs b/src/cal/day22.rs index 4d37f12..4ace3ce 100644 --- a/src/cal/day22.rs +++ b/src/cal/day22.rs @@ -7,17 +7,11 @@ pub(crate) fn router() -> Router { } async fn integers(nums: String) -> Result { - let mut nums = nums - .lines() - .map(|s| s.parse::().expect("All lines should be valid u64s")) - .collect::>(); - nums.sort_unstable(); - for i in (0..nums.len()).step_by(2) { - if i == (nums.len() - 1) || nums[i] != nums[i + 1] { - return Ok("🎁".repeat(nums[i] as usize)); - } - } - Err(StatusCode::BAD_REQUEST) + nums.lines() + .map(|s| s.parse::()) + .try_fold(0u64, |acc, n| n.map(|n| acc ^ n)) + .map(|n| "🎁".repeat(n as usize)) + .map_err(|_| StatusCode::BAD_REQUEST) } async fn rocket(input: String) -> Result {