mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 17:45:02 +01:00
cleanup
This commit is contained in:
parent
5c1a089038
commit
fa39b5faf4
11 changed files with 18 additions and 18 deletions
|
|
@ -20,7 +20,7 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
// this out of bounds read is UB under SB, but fine under models that don't do provenance narrowing with slices. i dont care enough to fix it.
|
// this out of bounds read is UB under SB, but fine under models that don't do provenance narrowing with slices. i dont care enough to fix it.
|
||||||
let block = bytes.as_ptr().add(i).cast::<u64>().read_unaligned().to_le();
|
let block = bytes.as_ptr().add(i).cast::<u64>().read_unaligned().to_le();
|
||||||
|
|
||||||
let one = (block & ((1 << (8 * 1)) - 1)) as u8;
|
let one = (block & ((1 << (8)) - 1)) as u8;
|
||||||
let three = block & ((1 << (8 * 3)) - 1);
|
let three = block & ((1 << (8 * 3)) - 1);
|
||||||
let four = block & ((1 << (8 * 4)) - 1);
|
let four = block & ((1 << (8 * 4)) - 1);
|
||||||
let five = block & ((1 << (8 * 5)) - 1);
|
let five = block & ((1 << (8 * 5)) - 1);
|
||||||
|
|
@ -42,7 +42,7 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
insert(if one >= b'0' && one <= b'9' { one } else { 0 });
|
insert(if one.is_ascii_digit() { one } else { 0 });
|
||||||
|
|
||||||
check!(EIGHT five == b"eight" => b'8');
|
check!(EIGHT five == b"eight" => b'8');
|
||||||
check!(SEVEN five == b"seven" => b'7');
|
check!(SEVEN five == b"seven" => b'7');
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
.read_unaligned()
|
.read_unaligned()
|
||||||
.to_le();
|
.to_le();
|
||||||
|
|
||||||
let one = (block & ((1 << (8 * 1)) - 1)) as u8;
|
let one = (block & ((1 << 8) - 1)) as u8;
|
||||||
let three = block & ((1 << (8 * 3)) - 1);
|
let three = block & ((1 << (8 * 3)) - 1);
|
||||||
let four = block & ((1 << (8 * 4)) - 1);
|
let four = block & ((1 << (8 * 4)) - 1);
|
||||||
let five = block & ((1 << (8 * 5)) - 1);
|
let five = block & ((1 << (8 * 5)) - 1);
|
||||||
|
|
@ -63,7 +63,7 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
acc |= if one >= b'0' && one <= b'9' { one } else { 0 };
|
acc |= if one.is_ascii_digit() { one } else { 0 };
|
||||||
|
|
||||||
check!(EIGHT five == b"eight" => b'8');
|
check!(EIGHT five == b"eight" => b'8');
|
||||||
check!(SEVEN five == b"seven" => b'7');
|
check!(SEVEN five == b"seven" => b'7');
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
.read_unaligned()
|
.read_unaligned()
|
||||||
.to_le();
|
.to_le();
|
||||||
|
|
||||||
let one = (block & ((1 << (8 * 1)) - 1)) as u8;
|
let one = (block & ((1 << 8) - 1)) as u8;
|
||||||
let three = block & ((1 << (8 * 3)) - 1);
|
let three = block & ((1 << (8 * 3)) - 1);
|
||||||
let four = block & ((1 << (8 * 4)) - 1);
|
let four = block & ((1 << (8 * 4)) - 1);
|
||||||
let five = block & ((1 << (8 * 5)) - 1);
|
let five = block & ((1 << (8 * 5)) - 1);
|
||||||
|
|
@ -61,13 +61,14 @@ pub unsafe fn part2(input: &str) -> u64 {
|
||||||
|
|
||||||
let mut acc = 0;
|
let mut acc = 0;
|
||||||
|
|
||||||
acc |= if one >= b'0' && one <= b'9' { one } else { 0 };
|
acc |= if one.is_ascii_digit() { one } else { 0 };
|
||||||
|
|
||||||
let mut vector_result = None;
|
let mut vector_result = None;
|
||||||
|
|
||||||
#[cfg(all(target_arch = "x86_64"))]
|
#[cfg(target_arch = "x86_64")]
|
||||||
if avx2 {
|
if avx2 {
|
||||||
use std::arch::x86_64;
|
use std::arch::x86_64;
|
||||||
|
#[allow(clippy::let_and_return)]
|
||||||
unsafe fn round(input: u64, compare: [u64; 4], then: [u64; 4]) -> x86_64::__m256i {
|
unsafe fn round(input: u64, compare: [u64; 4], then: [u64; 4]) -> x86_64::__m256i {
|
||||||
// YYYYYYYY|AAAAAAAA|XXXXXXXX|BBBBBBBB|
|
// YYYYYYYY|AAAAAAAA|XXXXXXXX|BBBBBBBB|
|
||||||
let compare = unsafe { std::mem::transmute::<_, x86_64::__m256i>(compare) };
|
let compare = unsafe { std::mem::transmute::<_, x86_64::__m256i>(compare) };
|
||||||
|
|
|
||||||
|
|
@ -92,8 +92,7 @@ fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let power = min[0] * min[1] * min[2];
|
min[0] * min[1] * min[2]
|
||||||
power
|
|
||||||
})
|
})
|
||||||
.sum()
|
.sum()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ pub fn basic(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
@ -45,7 +45,7 @@ pub fn bytes(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ pub fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ pub fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ pub fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ pub fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ pub fn part2(input: &str) -> u64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
let len = input.lines().next().unwrap().len();
|
let len = input.lines().next().unwrap().len();
|
||||||
let empty_border = std::iter::repeat('.').take(len).collect::<String>();
|
let empty_border = ".".repeat(len);
|
||||||
|
|
||||||
let mut prev2 = empty_border.as_str();
|
let mut prev2 = empty_border.as_str();
|
||||||
let mut prev1 = input.lines().next().unwrap();
|
let mut prev1 = input.lines().next().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ fn execute<D: Day>(variant: &Variant, input: &str) -> ! {
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
let input = D::pad_input(input);
|
let input = D::pad_input(input);
|
||||||
let result = (variant.f)(&input);
|
let result = (variant.f)(&input);
|
||||||
let err = write!(std::io::stdout(), "{result}\n");
|
let err = writeln!(std::io::stdout(), "{result}");
|
||||||
if let Err(err) = err {
|
if let Err(err) = err {
|
||||||
if err.kind() != std::io::ErrorKind::BrokenPipe {
|
if err.kind() != std::io::ErrorKind::BrokenPipe {
|
||||||
eprintln!("error: {err}");
|
eprintln!("error: {err}");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue