heh
bendn 2024-12-08
parent 5765be6 · commit 8b24a52
-rw-r--r--src/main.rs21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs
index 1c7507c..f99ea2c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -53,7 +53,7 @@ pub fn run(i: &str) -> impl Display {
match nums {
&[tail] => tv == tail,
[head @ .., tail] => {
- let &tail = tail;
+ let tail = *tail;
unsafe { core::hint::assert_unchecked(tail != 0) };
(tv % tail == 0 && search(head, tv / tail))
|| (tv > tail && search(head, tv - tail))
@@ -70,17 +70,14 @@ pub fn p2(i: &str) -> impl Display {
match nums {
&[tail] => tv == tail,
[head @ .., tail] => {
- if tv % tail == 0 && search(head, tv / tail) {
- return true;
- }
- let &d = unsafe { util::powers.get_unchecked(tail.ͱ() as usize) };
- if (tv - tail) % d == 0 && search(head, tv / d) {
- return true;
- }
- if tv > *tail && search(head, tv - tail) {
- return true;
- }
- return false;
+ let &d = unsafe {
+ util::powers
+ .get_unchecked((((tail + 0xbf6) & (tail + 0x79c)) >> 10) as usize + 1)
+ };
+ let tail = *tail;
+ (tv % tail == 0 && search(head, tv / tail))
+ || ((tv - tail) % d == 0 && search(head, tv / d))
+ || (tv > tail && search(head, tv - tail))
}
[] => shucks!(),
}