Compare commits
No commits in common. "40248e82e93c2ec8c965dc931e4b2b76bcdd7783" and "3070407092f773d264329fe663b7ef1735a59eb5" have entirely different histories.
40248e82e9
...
3070407092
5
in/2.txt
5
in/2.txt
@ -1,5 +0,0 @@
|
||||
RUDULRLLUULRURDDRRUDURULLLDRLRLUDDLUDUDDUDRRDUDULDUUULLRULLRLDDLDLDDRLRRRRUDLLDDUULDRLLUDDRRUURLULRRRDLLURRUUDURUDDURLUDDDLUDDUUDUURUDLRDRDRLRDRLDRUDRUUDLRDDRRURDDLRDDRRURDUDDLULLUDRURURRRLRRUDUULULULRRLDLUDUURRLLRUDLLDRDDLRRRULRUDLULDDLLLULDLRUDLLLLRDDLRDRLDRLLRDRRDLRDULULRLLLDRUDRRRUULRUULDRURLUDRURRDLLDLRDLDDDDRRLUDLRRLUUUURDRDDLRRURURRDUULLRLURLURUDDDRDURDUUDRLRLRRLDDLDLDLDDDUDDULURLDDLLRLRRDULUDDLULRLUDDLDLRULUUUDRLDRUDURLUDDRLLRUULDLRRRRDLLLLURULLRDRRUDLUULRRDLLRLRLUDLDDULLDLLRDLDLL
|
||||
LLUUUUUUDUDRLRDRDLDURRRLLRRLRURLLUURRLLUDUDLULUURUUURDLUDLDDLULLRDLRUULDLRDUDURLLDDUDUDULLUDDUULLLUULRRRLULRURRDLRUDUDDURRRDRUURDURLLULLRULLDRUULLURLDRDUUDDDDDDRRLDRLRRRLULDDUURRLLLLDRURLURDRDRDURUDUURRDUDUDRLLUUDDRLUDDDRDLDLRLDRURRDLLRULDRLLURURRLUULLRLRRURDDRDRUUURUURUUUDLLRRLUDRLDLRLURLDLUDDUDDDLDUDRRLDLRURULRLLRDUULURRRULDLLLRLDDDUURRRRDULLRURRLULULDLRRUDUDDLRUURDLDUDDUDRRDLRRRDUDUUUDLLDDDDLURLURRRUUULLLULRRLLLLLLULDUUDLRUDRRDLRDUUDUDLLRLDLLRUURDUUURUUUDDLLUUDLULDURLULULUUUDRUDULLURRULRULLRDLDDU
|
||||
RLUUURULLDLRLDUDRDURRDUURLLUDDDUULRRRLRLURDDRUULUDULDUUDDDDUDDDDRUDDLDUUDRUDLRRRLLRDDLLLRLLRUULRUULDDRURRLURRLRLULDDRRRDDURDDRDRDULRUDRUUDULRLLULDLRLLDRULRDDRRDDUDLRLLUDRDRRRLUDULRDLRDDURRUUDDRRUDURRUUUDDRRDUDURLUUDUDUURDDDLURLULLUULULURUDUUDRUDULLUUULURDLDUULLDDLLDULRLRLRDUUURUUDLRLDURUDRLDULLUDLDLLRDUURRDUDURLUUUDLLRRULRLULRLDLLURDURRULRLLRRDUDLLRDRRRRDLUUDRUUUDDLRLUDDDDDDRURRRUUURRDLLRURLDDLLDLRRLLLDRRULRRUDLDRDDRRLULURLLUURURURRRRUUUUURUDURLRLLLULULDLLDLRDRRULUDUDRDRRDRDRRDUDLLLRUDRUDDDULRULRRRDRLRUUUURUDURDUUULLULRUDDULDUUDLDURRD
|
||||
ULRULDDLDLULLLRRRLRUDDDDDLLDDUDLRRDULUUDRDLRRURDRRLUULRURUDRRULDLLLUDRUUDULULUDDRUDDDRDURRRDRDUUURLRDULUDRDRLDRUDDLLLDRRULUDLUDLDLLRRUDUULULDLDLLUURDLDDLLUUDURLURLLLDRDLDRRLRULUURRDRULRUUURULRRUDDDDLLDLDDLLRRLRRRRDUUDUDLDRDRRURDLRURULDLRDLLLLRUDRLLRDLRLRDURDRUDURRRLRDRDLLRLUDDDDRLRLLDUURRURLUURUULUDLUURDRRUDDLUDUDDDURRDRUDRLRULDULUUUUUUDDUDRUDUUURUDRRDLUDLUUDUULUDURDLDDDLLURRURUUDUDDRRDRLLULULDRLRURRDDDRDUUURDDDRULUDRDDLDURRLDDDLRRRLDDRDURULDLUDLLLURLURRLRRULDLLDDUDRRULDRRRRLURRUULRRRUDLURDLLDLLDULUUDRRLDLLLDRLRUDLUULDLDRUDUDURDRUDRDDDLRLULLUR
|
||||
LRLUUURRLRRRRRUURRLLULRLULLDLUDLUDRDDRLDLRLULLURDURLURDLLRLDUUDDURRRRLDLLRULLRLDLLUUDRLDDLLDRULDRLLRURDLRURRUDLULLRURDLURRURUDULLDRLLUUULUDRURRUUDUDULUUULRLDDULDRDLUDDUDDDLRURULLDLLLRLLUURDLRUDLLLLDLLRLRUUUDDRUUUUDLDLRDDURLDURUULLLUUDLLLLDULRRRLLDLDRRDRLUDRUDURLLUDLRLLUDUDRDDDRDLRDLRULUULDRLUDLRLDUURLRRLUDDDUUDDDUDRLDLDUDLURUULLDDDURUUULRLUDLDURUUDRDRURUDDUURDUUUDLLDLDLDURUURLLLLRURUURURULRULLRUDLRRUUUUUDRRLLRDDUURDRDRDDDUDRLURDRRRUDLLLDURDLUUDLLUDDULUUDLDUUULLDRDLRURUURRDURRDLURRRRLLUUULRDULDDLDUURRDLDLLULRRLLUDLDUDLUUL
|
||||
@ -1,5 +1,5 @@
|
||||
pub mod d1;
|
||||
pub mod d2;
|
||||
// pub mod d2;
|
||||
// pub mod d3;
|
||||
// pub mod d4;
|
||||
// pub mod d5;
|
||||
|
||||
108
src/days/d2.rs
108
src/days/d2.rs
@ -1,108 +0,0 @@
|
||||
use crate::prelude::*;
|
||||
|
||||
pub type I = Vec<Vec<(i8, i8)>>;
|
||||
pub type O = String;
|
||||
|
||||
fn _parse (data: &str) -> I {
|
||||
data.trim().lines().map(|line| line.trim().chars().map(|c| match c {
|
||||
'L' => (-1, 0),
|
||||
'U' => (0, -1),
|
||||
'R' => (1, 0),
|
||||
'D' => (0, 1),
|
||||
_ => unreachable!()
|
||||
}).collect()).collect()
|
||||
}
|
||||
|
||||
fn _solve (data: &I) -> O {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
fn _silver (data: &I) -> O {
|
||||
let mut out = format!("");
|
||||
|
||||
let mut x = 1;
|
||||
let mut y = 1;
|
||||
|
||||
let r = 0..=2;
|
||||
|
||||
for n in data {
|
||||
for (dx, dy) in n {
|
||||
let nx = x + dx;
|
||||
let ny = y + dy;
|
||||
|
||||
if r.contains(&nx) && r.contains(&ny) {
|
||||
x = nx;
|
||||
y = ny;
|
||||
}
|
||||
}
|
||||
|
||||
out.push(((y * 3 + x) as u8 + b'1') as char);
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
fn _gold (data: &I) -> O {
|
||||
let mut out = format!("");
|
||||
|
||||
let mut x = 2;
|
||||
let mut y = 2;
|
||||
|
||||
let m = M::from([
|
||||
((0, 2), '1'),
|
||||
((1, 1), '2'),
|
||||
((1, 2), '3'),
|
||||
((1, 3), '4'),
|
||||
((2, 0), '5'),
|
||||
((2, 1), '6'),
|
||||
((2, 2), '7'),
|
||||
((2, 3), '8'),
|
||||
((2, 4), '9'),
|
||||
((3, 1), 'A'),
|
||||
((3, 2), 'B'),
|
||||
((3, 3), 'C'),
|
||||
((4, 2), 'D'),
|
||||
]);
|
||||
|
||||
for n in data {
|
||||
for (dx, dy) in n {
|
||||
let nx = x + dx;
|
||||
let ny = y + dy;
|
||||
|
||||
if m.contains_key(&(ny, nx)) {
|
||||
x = nx;
|
||||
y = ny;
|
||||
}
|
||||
}
|
||||
|
||||
out.push(*m.get(&(y, x)).unwrap());
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
|
||||
fn read () -> I {
|
||||
let data = inc!(2);
|
||||
_parse(data)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn silver () {
|
||||
let data = read();
|
||||
let ans = _silver(&data);
|
||||
|
||||
assert_eq!(ans, s!(74921))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gold () {
|
||||
let data = read();
|
||||
let ans = _gold(&data);
|
||||
|
||||
assert_eq!(ans, s!("A6B35"))
|
||||
}
|
||||
}
|
||||
@ -3,20 +3,16 @@ use crate::prelude::*;
|
||||
pub type I = String;
|
||||
pub type O = i64;
|
||||
|
||||
fn _parse (data: &str) -> I {
|
||||
Default::default()
|
||||
fn solve (data: I) -> O {
|
||||
0
|
||||
}
|
||||
|
||||
fn _solve (data: I) -> O {
|
||||
Default::default()
|
||||
fn silver (data: I) -> O {
|
||||
0
|
||||
}
|
||||
|
||||
fn _silver (data: I) -> O {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
fn _gold (data: I) -> O {
|
||||
Default::default()
|
||||
fn gold (data: I) -> O {
|
||||
0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@ -24,23 +20,16 @@ mod test {
|
||||
use super::*;
|
||||
|
||||
fn read () -> I {
|
||||
let data = inc!(_);
|
||||
_parse(data)
|
||||
Default::default()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn silver () {
|
||||
let data = read();
|
||||
let ans = _silver(&data);
|
||||
|
||||
assert_eq!(ans, 1)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gold () {
|
||||
let data = read();
|
||||
let ans = _gold(&data);
|
||||
|
||||
assert_eq!(ans, 1)
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,9 +3,3 @@ pub macro inc {
|
||||
include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/in/", $d, ".txt"))
|
||||
}
|
||||
}
|
||||
|
||||
pub macro s {
|
||||
($s: literal) => {
|
||||
format!("{}", $s)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user