Skip to content

Commit 5b7c811

Browse files
committed
Use u16 instead of usize
1 parent e73bc63 commit 5b7c811

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

src/day10.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use aoc_runner_derive::aoc;
22

3-
const MAX_SIZE: usize = 64;
3+
const MAX_SIZE: usize = 50;
44
const BIG_SIZE: usize = MAX_SIZE * (MAX_SIZE + 2);
55

66
#[aoc(day10, part1)]
@@ -12,9 +12,9 @@ pub fn part1(s: &str) -> u32 {
1212
unsafe fn part1_inner(s: &str) -> u32 {
1313
let s = s.as_bytes();
1414

15-
let mut positions = [(0usize, [0usize; MAX_SIZE * MAX_SIZE / 9]); 9];
15+
let mut positions = [(0u16, [0u16; MAX_SIZE * MAX_SIZE / 9]); 9];
1616

17-
let mut zeros = [0usize; MAX_SIZE * MAX_SIZE / 9];
17+
let mut zeros = [0u16; MAX_SIZE * MAX_SIZE / 9];
1818
let mut zeros_i = 0;
1919

2020
let mut y = 0;
@@ -29,11 +29,11 @@ unsafe fn part1_inner(s: &str) -> u32 {
2929

3030
let layer = (c - b'0') as usize;
3131
if layer == 0 {
32-
zeros[zeros_i] = y * MAX_SIZE + x + MAX_SIZE;
32+
zeros[zeros_i as usize] = (y * MAX_SIZE + x + MAX_SIZE) as u16;
3333
zeros_i += 1;
3434
} else {
3535
let len = positions[layer - 1].0;
36-
positions[layer - 1].1[len] = y * MAX_SIZE + x + MAX_SIZE;
36+
positions[layer - 1].1[len as usize] = (y * MAX_SIZE + x + MAX_SIZE) as u16;
3737
positions[layer - 1].0 += 1;
3838
}
3939
x += 1;
@@ -44,13 +44,13 @@ unsafe fn part1_inner(s: &str) -> u32 {
4444

4545
let mut sum = 0;
4646
for i in &zeros[..zeros_i] {
47-
current[*i] = true;
47+
current[*i as usize] = true;
4848

4949
for layer in 0..8 {
5050
let (len, positions) = positions[layer];
5151

52-
for i in &positions[..len] {
53-
let i = *i;
52+
for i in &positions[..len as usize] {
53+
let i = *i as usize;
5454
next[i] = current[i - 1]
5555
|| current[i + 1]
5656
|| current[i + MAX_SIZE]
@@ -62,7 +62,8 @@ unsafe fn part1_inner(s: &str) -> u32 {
6262
}
6363

6464
let (len9, positions9) = positions[8];
65-
for i in &positions9[..len9] {
65+
for i in &positions9[..len9 as usize] {
66+
let i = *i as usize;
6667
if current[i - 1] || current[i + 1] || current[i + MAX_SIZE] || current[i - MAX_SIZE] {
6768
sum += 1;
6869
}
@@ -82,7 +83,7 @@ pub fn part2(s: &str) -> u16 {
8283
unsafe fn part2_inner(s: &str) -> u16 {
8384
let s = s.as_bytes();
8485

85-
let mut positions = [(0usize, [0usize; MAX_SIZE * MAX_SIZE / 9]); 9];
86+
let mut positions = [(0u16, [0u16; MAX_SIZE * MAX_SIZE / 9]); 9];
8687
let mut first_map = [0u16; BIG_SIZE];
8788

8889
let mut y = 0;
@@ -99,8 +100,8 @@ unsafe fn part2_inner(s: &str) -> u16 {
99100
if layer == 0 {
100101
first_map[y * MAX_SIZE + x + MAX_SIZE] = 1;
101102
} else {
102-
let len = positions[layer - 1].0;
103-
positions[layer - 1].1[len] = y * MAX_SIZE + x + MAX_SIZE;
103+
let len = positions[layer - 1].0 as usize;
104+
positions[layer - 1].1[len] = (y * MAX_SIZE + x + MAX_SIZE) as u16;
104105
positions[layer - 1].0 += 1;
105106
}
106107
x += 1;
@@ -114,8 +115,8 @@ unsafe fn part2_inner(s: &str) -> u16 {
114115
for layer in 0..8 {
115116
let (len, positions) = positions[layer];
116117

117-
for i in &positions[..len] {
118-
let i = *i;
118+
for i in &positions[..len as usize] {
119+
let i = *i as usize;
119120
next[i] =
120121
current[i - 1] + current[i + 1] + current[i + MAX_SIZE] + current[i - MAX_SIZE];
121122
}
@@ -125,7 +126,8 @@ unsafe fn part2_inner(s: &str) -> u16 {
125126
}
126127

127128
let (len9, positions9) = positions[8];
128-
for i in &positions9[..len9] {
129+
for i in &positions9[..len9 as usize] {
130+
let i = *i as usize;
129131
sum += current[i - 1] + current[i + 1] + current[i + MAX_SIZE] + current[i - MAX_SIZE];
130132
}
131133

0 commit comments

Comments
 (0)