2022-12-02 14:14:02 -06:00
|
|
|
mod common;
|
|
|
|
|
2022-12-02 23:19:18 -06:00
|
|
|
use std::collections::HashSet;
|
|
|
|
|
2022-12-02 14:14:02 -06:00
|
|
|
fn main() {
|
2022-12-02 23:19:18 -06:00
|
|
|
let input = common::day_input(3);
|
2022-12-02 14:14:02 -06:00
|
|
|
println!("Part 1: {}", part1(&input));
|
|
|
|
println!("Part 2: {}", part2(&input));
|
|
|
|
}
|
|
|
|
|
|
|
|
fn part1(input: &str) -> i32 {
|
2022-12-02 23:19:18 -06:00
|
|
|
let mut r = 0_i32;
|
|
|
|
for l in input.lines() {
|
|
|
|
println!("{}", l);
|
|
|
|
let mut s: HashSet<u8> = HashSet::new();
|
|
|
|
let bytes = l.as_bytes();
|
|
|
|
let mut n = 0;
|
|
|
|
let bar = bytes.len() / 2;
|
|
|
|
println!("{}", bar);
|
|
|
|
for b in bytes {
|
|
|
|
print!("{}.", b);
|
|
|
|
if s.contains(b) && n >= bar {
|
|
|
|
if *b >= 97 && *b <= 122 {
|
|
|
|
r += (*b as i32) - 96;
|
|
|
|
} else {
|
|
|
|
r += (*b as i32) - 65 + 27;
|
|
|
|
}
|
|
|
|
println!(" == {}", r);
|
|
|
|
break;
|
|
|
|
} else if n < bar {
|
|
|
|
s.insert(*b);
|
|
|
|
}
|
|
|
|
n += 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return r;
|
2022-12-02 14:14:02 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
fn part2(input: &str) -> i32 {
|
|
|
|
0
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
|
2022-12-02 23:19:18 -06:00
|
|
|
const TEST_INPUT: &str = "vJrwpWtwJgWrhcsFMMfFFhFp
|
|
|
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
|
|
|
PmmdzqPrVvPwwTWBwg
|
|
|
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
|
|
|
ttgJtRGJQctTZtZT
|
|
|
|
CrZsJsPPZsGzwwsLwLmpwMDw";
|
2022-12-02 14:14:02 -06:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_part1() {
|
2022-12-02 23:19:18 -06:00
|
|
|
assert_eq!(part1(TEST_INPUT), 157)
|
2022-12-02 14:14:02 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_part2() {
|
|
|
|
assert_eq!(part2(TEST_INPUT), 0)
|
|
|
|
}
|
|
|
|
}
|