mirror of
https://github.com/javalsai/aoc.git
synced 2026-01-12 17:10:00 +01:00
add: 07, had to work today but srsly whats the fuzz with today
This commit is contained in:
@@ -6,10 +6,6 @@ enum Op {
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub unsafe extern "Rust" fn challenge_usize(buf: &[u8]) -> usize {
|
||||
fn d(d: u8) -> usize {
|
||||
if d == b' ' { 0 } else { (d - b'0') as usize }
|
||||
}
|
||||
|
||||
use Op::*;
|
||||
|
||||
let mut iter = buf[0..(buf.len() - 1)]
|
||||
@@ -28,7 +24,7 @@ pub unsafe extern "Rust" fn challenge_usize(buf: &[u8]) -> usize {
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
iter.enumerate().for_each(|(bottom_idx, ln)| {
|
||||
iter.for_each(|ln| {
|
||||
let mut idx = 0;
|
||||
ln.filter_map(|n_str| {
|
||||
let r = (idx, n_str);
|
||||
@@ -45,7 +41,7 @@ pub unsafe extern "Rust" fn challenge_usize(buf: &[u8]) -> usize {
|
||||
});
|
||||
});
|
||||
|
||||
println!("{ops:?}");
|
||||
// println!("{ops:?}");
|
||||
ops.iter().fold(0, |acc, (opacc, vec, _)| {
|
||||
let n: usize = match opacc {
|
||||
Mul => vec.iter().map(|(a, _)| a).product(),
|
||||
@@ -59,7 +55,7 @@ fn insert_dig(into: &mut Vec<(usize, u32)>, at: usize, dig: u8) {
|
||||
if dig != b' ' {
|
||||
if let Some((mref, len)) = into.get_mut(at) {
|
||||
*mref += (dig - b'0') as usize * 10usize.pow(*len);
|
||||
dbg!(mref);
|
||||
// dbg!(mref);
|
||||
*len += 1;
|
||||
} else {
|
||||
let mut i = into.len();
|
||||
|
||||
31
2025/07/p1.rs
Normal file
31
2025/07/p1.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn challenge_usize(buf: &[u8]) -> usize {
|
||||
let mut splits = 0;
|
||||
|
||||
let mut ln_iter = buf[0..(buf.len() - 1)].split(|&b| b == b'\n');
|
||||
|
||||
let first_line = ln_iter.next().unwrap();
|
||||
let mut ray_boollist = Box::new_uninit_slice(first_line.len());
|
||||
first_line
|
||||
.iter()
|
||||
.map(|&c| c == b'S')
|
||||
.enumerate()
|
||||
.for_each(|(i, b)| {
|
||||
ray_boollist[i].write(b);
|
||||
});
|
||||
let mut ray_boollist = unsafe { ray_boollist.assume_init() };
|
||||
|
||||
for ln in ln_iter {
|
||||
// dbg!(unsafe { str::from_utf8_unchecked(ln) }, splits);
|
||||
for (i, _) in ln.iter().enumerate().filter(|&(_, &c)| c == b'^') {
|
||||
if ray_boollist[i] {
|
||||
splits += 1;
|
||||
ray_boollist[i] = false;
|
||||
ray_boollist.get_mut(i - 1).map(|b| *b = true);
|
||||
ray_boollist.get_mut(i + 1).map(|b| *b = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
splits
|
||||
}
|
||||
32
2025/07/p2.rs
Normal file
32
2025/07/p2.rs
Normal file
@@ -0,0 +1,32 @@
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "Rust" fn challenge_usize(buf: &[u8]) -> usize {
|
||||
let mut splits = 0;
|
||||
|
||||
let mut ln_iter = buf[0..(buf.len() - 1)].split(|&b| b == b'\n');
|
||||
|
||||
let first_line = ln_iter.next().unwrap();
|
||||
let mut ray_boollist = Box::new_uninit_slice(first_line.len());
|
||||
first_line
|
||||
.iter()
|
||||
.map(|&c| if c == b'S' { 1 } else { 0 })
|
||||
.enumerate()
|
||||
.for_each(|(i, b)| {
|
||||
ray_boollist[i].write(b);
|
||||
});
|
||||
let mut ray_list = unsafe { ray_boollist.assume_init() };
|
||||
|
||||
for ln in ln_iter {
|
||||
// dbg!(unsafe { str::from_utf8_unchecked(ln) }, splits);
|
||||
for (i, _) in ln.iter().enumerate().filter(|&(_, &c)| c == b'^') {
|
||||
let worlds_here = ray_list[i];
|
||||
splits += worlds_here;
|
||||
if worlds_here > 0 {
|
||||
ray_list[i] = 0;
|
||||
ray_list.get_mut(i - 1).map(|b| *b += worlds_here);
|
||||
ray_list.get_mut(i + 1).map(|b| *b += worlds_here);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
splits + 1 // + 1 idk why
|
||||
}
|
||||
Reference in New Issue
Block a user