rustfmt
This commit is contained in:
+16
-5
@@ -1,10 +1,10 @@
|
||||
use std::{io::Result, fs::read_to_string, collections::HashSet};
|
||||
use std::{collections::HashSet, fs::read_to_string, io::Result};
|
||||
|
||||
pub fn priority(x: u8) -> u32 {
|
||||
(match x {
|
||||
0x61..=0x7a => x - 0x61 + 1,
|
||||
0x41..=0x5a => x - 0x41 + 27,
|
||||
_ => unreachable!()
|
||||
_ => unreachable!(),
|
||||
}) as u32
|
||||
}
|
||||
|
||||
@@ -16,19 +16,30 @@ fn main() -> Result<()> {
|
||||
let mut elves: Vec<HashSet<_>> = Vec::new();
|
||||
|
||||
for line in read_to_string("input.txt")?.split("\n") {
|
||||
if line.is_empty() { continue; }
|
||||
if line.is_empty() {
|
||||
continue;
|
||||
}
|
||||
let bytes = line.as_bytes();
|
||||
|
||||
let (first_half, second_half) = bytes.split_at(bytes.len() / 2);
|
||||
let in_first_half = first_half.iter().copied().collect::<HashSet<_>>();
|
||||
let in_second_half = second_half.iter().copied().collect::<HashSet<_>>();
|
||||
let in_both_halves = in_first_half.intersection(&in_second_half).copied().next().unwrap();
|
||||
let in_both_halves = in_first_half
|
||||
.intersection(&in_second_half)
|
||||
.copied()
|
||||
.next()
|
||||
.unwrap();
|
||||
p1_priority += priority(in_both_halves);
|
||||
|
||||
let items = bytes.iter().copied().collect::<HashSet<_>>();
|
||||
elves.push(items.clone());
|
||||
if i == 2 {
|
||||
let badge = items.iter().filter(|item| elves.iter().filter(|elf| elf.contains(item)).count() == 3).copied().next().unwrap();
|
||||
let badge = items
|
||||
.iter()
|
||||
.filter(|item| elves.iter().filter(|elf| elf.contains(item)).count() == 3)
|
||||
.copied()
|
||||
.next()
|
||||
.unwrap();
|
||||
p2_priority += priority(badge);
|
||||
elves.clear();
|
||||
i = 0;
|
||||
|
||||
Reference in New Issue
Block a user