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 d1;
|
||||||
pub mod d2;
|
// pub mod d2;
|
||||||
// pub mod d3;
|
// pub mod d3;
|
||||||
// pub mod d4;
|
// pub mod d4;
|
||||||
// pub mod d5;
|
// 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 I = String;
|
||||||
pub type O = i64;
|
pub type O = i64;
|
||||||
|
|
||||||
fn _parse (data: &str) -> I {
|
fn solve (data: I) -> O {
|
||||||
Default::default()
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
fn _solve (data: I) -> O {
|
fn silver (data: I) -> O {
|
||||||
Default::default()
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
fn _silver (data: I) -> O {
|
fn gold (data: I) -> O {
|
||||||
Default::default()
|
0
|
||||||
}
|
|
||||||
|
|
||||||
fn _gold (data: I) -> O {
|
|
||||||
Default::default()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -24,23 +20,16 @@ mod test {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
fn read () -> I {
|
fn read () -> I {
|
||||||
let data = inc!(_);
|
Default::default()
|
||||||
_parse(data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn silver () {
|
fn silver () {
|
||||||
let data = read();
|
|
||||||
let ans = _silver(&data);
|
|
||||||
|
|
||||||
assert_eq!(ans, 1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn gold () {
|
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"))
|
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