Skip to content

Commit a5ee2d2

Browse files
committed
Revert "Use jump table"
This reverts commit c8f5182.
1 parent c8f5182 commit a5ee2d2

File tree

2 files changed

+29
-26
lines changed

2 files changed

+29
-26
lines changed

build.rs

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -225,36 +225,38 @@ fn write_day21() {
225225
file.write_all(&lut).unwrap();
226226
}
227227

228-
#[allow(unused)]
229-
fn write_day22() {
230-
const MAX: u32 = 16777216;
228+
// #[allow(unused)]
229+
// fn write_day22() {
230+
// const MAX: u32 = 16777216;
231231

232-
let mut lut = Vec::with_capacity(MAX as usize);
232+
// let mut lut = Vec::with_capacity(MAX as usize);
233233

234-
for i in 0..MAX {
235-
let mut sn = i;
236-
sn = ((sn as u64 * 64) % MAX as u64) as u32 ^ sn;
237-
sn = (sn / 32) ^ sn;
238-
sn = ((sn as u64 * 2048) % MAX as u64) as u32 ^ sn;
234+
// for i in 0..MAX {
235+
// let mut sn = i;
236+
// for _ in 0..2000 {
237+
// sn = ((sn as u64 * 64) % MAX as u64) as u32 ^ sn;
238+
// sn = (sn / 32) ^ sn;
239+
// sn = ((sn as u64 * 2048) % MAX as u64) as u32 ^ sn;
240+
// }
239241

240-
lut.push(sn);
241-
}
242+
// lut.push(sn);
243+
// }
242244

243-
let lut: Box<[u32; MAX as usize]> = lut.into_boxed_slice().try_into().unwrap();
244-
let mut lut = std::mem::ManuallyDrop::new(lut);
245-
let lut: Box<[u8; 4 * MAX as usize]> = unsafe { Box::from_raw(lut.as_mut_ptr().cast()) };
245+
// let lut: Box<[u32; MAX as usize]> = lut.into_boxed_slice().try_into().unwrap();
246+
// let mut lut = std::mem::ManuallyDrop::new(lut);
247+
// let lut: Box<[u8; 4 * MAX as usize]> = unsafe { Box::from_raw(lut.as_mut_ptr().cast()) };
246248

247-
let mut path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
248-
path.push("day22_jmp.bin");
249-
let mut file = File::create(&path).unwrap();
249+
// let mut path = PathBuf::from(std::env::var("OUT_DIR").unwrap());
250+
// path.push("day22.bin");
251+
// let mut file = File::create(&path).unwrap();
250252

251-
file.write_all(lut.as_slice()).unwrap();
252-
println!("{}", path.display());
253-
}
253+
// file.write_all(lut.as_slice()).unwrap();
254+
// println!("{}", path.display());
255+
// }
254256

255257
fn main() {
256258
println!("cargo::rerun-if-changed=build.rs");
257259

258260
write_day21();
259-
write_day22();
261+
// write_day22();
260262
}

src/day22.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ pub fn part1(s: &str) -> u64 {
4444
sum
4545
}
4646

47-
static JMP_TBL: [u32; MAX as usize] =
48-
unsafe { transmute(*include_bytes!(concat!(env!("OUT_DIR"), "/day22_jmp.bin"))) };
49-
5047
const SEQUENCES: usize = 18 * 18 * 18 * 18;
5148

5249
#[aoc(day22, part2)]
@@ -86,7 +83,9 @@ pub fn part2(s: &str) -> i16 {
8683
let mut prev = sn % 10;
8784

8885
for _ in 0..3 {
89-
sn = JMP_TBL[sn as usize];
86+
sn = ((sn as u64 * 64) % MAX as u64) as u32 ^ sn;
87+
sn = (sn / 32) ^ sn;
88+
sn = ((sn as u64 * 2048) % MAX as u64) as u32 ^ sn;
9089
let price = sn % 10;
9190
let diff = price + 9 - prev;
9291
diffs = diffs * 18 + diff;
@@ -95,7 +94,9 @@ pub fn part2(s: &str) -> i16 {
9594
}
9695

9796
for _ in 4..2000 {
98-
sn = JMP_TBL[sn as usize];
97+
sn = ((sn as u64 * 64) % MAX as u64) as u32 ^ sn;
98+
sn = (sn / 32) ^ sn;
99+
sn = ((sn as u64 * 2048) % MAX as u64) as u32 ^ sn;
99100
let price = sn % 10;
100101
let diff = price + 9 - prev;
101102
diffs = (diffs * 18 + diff) % SEQUENCES as u32;

0 commit comments

Comments
 (0)