Skip to content

Commit f70b60f

Browse files
committed
Remove all get unwrap or's
1 parent e8ece8e commit f70b60f

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/day12.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn part1(s: &str) -> u32 {
1919
fn part1_inner(s: &str) -> u32 {
2020
let s = s.as_bytes();
2121

22-
let mut id_map = [0u16; SIZE1 * SIZE1];
22+
let mut id_map = [0u16; SIZE * SIZE1];
2323
let mut next_id = 1;
2424

2525
let mut merges = const {
@@ -35,36 +35,40 @@ fn part1_inner(s: &str) -> u32 {
3535
let mut perimiter = [0u16; 2048];
3636

3737
for i in 0..SIZE * SIZE1 {
38-
let c = s.get(i).cloned().unwrap_or(b'\n');
39-
let prev = s.get(i.wrapping_sub(1)).cloned().unwrap_or(b'\n');
40-
let up = s.get(i.wrapping_sub(SIZE1)).cloned().unwrap_or(b'\n');
41-
let prev_id = unsafe { merges[*id_map.get_unchecked(i + SIZE1 - 1) as usize] };
42-
let up_id = unsafe { merges[*id_map.get_unchecked(i) as usize] };
38+
let c = unsafe { *s.get_unchecked(i) };
39+
let prev = unsafe { *s.get_unchecked(i.wrapping_sub(1).min(SIZE * SIZE1 - 1)) };
40+
let up = unsafe { *s.get_unchecked(i.wrapping_sub(SIZE1).min(SIZE * SIZE1 - 1)) };
41+
let prev_id = unsafe {
42+
merges[*id_map.get_unchecked(i.wrapping_sub(1).min(SIZE * SIZE1 - 1)) as usize]
43+
};
44+
let up_id = unsafe {
45+
merges[*id_map.get_unchecked(i.wrapping_sub(SIZE1).min(SIZE * SIZE1 - 1)) as usize]
46+
};
4347

4448
if prev == c && c == up && prev_id == up_id {
45-
id_map[i + SIZE1] = prev_id;
49+
id_map[i] = prev_id;
4650

4751
area[prev_id as usize] += 1;
4852
} else if prev == c && c == up {
49-
id_map[i + SIZE1] = prev_id;
53+
id_map[i] = prev_id;
5054

5155
merges[up_id as usize] = prev_id;
5256

5357
area[prev_id as usize] += 1;
5458
} else if prev == c {
55-
id_map[i + SIZE1] = prev_id;
59+
id_map[i] = prev_id;
5660

5761
area[prev_id as usize] += 1;
5862
perimiter[prev_id as usize] += 1;
5963
perimiter[up_id as usize] += 1;
6064
} else if up == c {
61-
id_map[i + SIZE1] = up_id;
65+
id_map[i] = up_id;
6266

6367
area[up_id as usize] += 1;
6468
perimiter[prev_id as usize] += 1;
6569
perimiter[up_id as usize] += 1;
6670
} else {
67-
id_map[i + SIZE1] = next_id;
71+
id_map[i] = next_id;
6872

6973
area[next_id as usize] += 1;
7074
perimiter[next_id as usize] += 2;
@@ -75,7 +79,7 @@ fn part1_inner(s: &str) -> u32 {
7579
}
7680
}
7781
for x in 0..SIZE {
78-
perimiter[id_map[SIZE * SIZE1 + x] as usize] += 1;
82+
perimiter[id_map[(SIZE - 1) * SIZE1 + x] as usize] += 1;
7983
}
8084

8185
// for id in 0..next_id {

0 commit comments

Comments
 (0)