mirror of
https://github.com/plasmaofthedawn/adventofcode.git
synced 2025-08-25 02:22:03 -05:00
part 9
This commit is contained in:
50
resources/2024/day10.txt
Normal file
50
resources/2024/day10.txt
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
01210565345898676589898782365821232102010123017876
|
||||||
|
90321678216787789432765691078910123421129898326921
|
||||||
|
85434589307675692321054302169891436530234787635410
|
||||||
|
76105410898365781010303213456786569645345676544321
|
||||||
|
85234323965414654325212300145652478756764980121010
|
||||||
|
99965410879303109834567810234521010189893210236789
|
||||||
|
78876323478212236723654923210433125670120189845678
|
||||||
|
67891274560143445210543214541244534561431276796012
|
||||||
|
54900785123432212347652905610143213432587345687323
|
||||||
|
03215691098501101458921876921658701521696014987432
|
||||||
|
12104320187632310762340967834769657610785223896561
|
||||||
|
89001211290547499891056754965892348901234106767870
|
||||||
|
78701004321678987012349823876101637878789015458987
|
||||||
|
57632985934554356101067810732876578769654320327810
|
||||||
|
66543876821765243241056934541923459054754321216721
|
||||||
|
76544710730890154332343129690012365149869210205430
|
||||||
|
89235623649212343451010018781011076232778900124321
|
||||||
|
89126104558901650142161209652100985401657635433567
|
||||||
|
76011234567230789233454313443001234300344521589458
|
||||||
|
69800101010147898541969896323121201211235430676329
|
||||||
|
54763212327656987680878765410010340125656780034210
|
||||||
|
03454987438705467891253267651103456234743491125876
|
||||||
|
12565898549812356732344198543212187649872332976945
|
||||||
|
23476787653201345673445053434781098521011349889932
|
||||||
|
10984323654101230984986764325690678434100656779871
|
||||||
|
06765014787010121895679871014506589847812341018760
|
||||||
|
19854565498321030765098762123417432156998765123454
|
||||||
|
87763474325441001234125634564328921034567654104303
|
||||||
|
96012981016932018983034521071012980103010783210412
|
||||||
|
05692345697849823676123658989343898912023890104321
|
||||||
|
14581016787856704589105437210956769820124730032450
|
||||||
|
23673451078933219673216926367801458765435621121267
|
||||||
|
10562162564324788764567815450132349654596534230398
|
||||||
|
21093073455015691058766701321891212563187965495434
|
||||||
|
38981989526998582349654877894580305012056876786543
|
||||||
|
47670676017877894321123966943671456872146781787012
|
||||||
|
56541905423456765890001455432106567987235690195401
|
||||||
|
65432812332303456789010340321017898716544303276513
|
||||||
|
76306701221412309654321231298543410106983210389432
|
||||||
|
89215412030565218943289101067652341237803454459011
|
||||||
|
50300303121674307650176532356501496546712365598120
|
||||||
|
41101254438985456210125901445032587435012879687034
|
||||||
|
32256965567676781032134876532145670124326978776543
|
||||||
|
43347871298767892345092180123230598763065857894304
|
||||||
|
56998780185652102216783091038321347892176543765212
|
||||||
|
47882398234543221003234582549801256743089434894301
|
||||||
|
30701543210956310120107698756703454656910125323212
|
||||||
|
21032672341865210032198989687012563347887016714509
|
||||||
|
32147881256774398941099012596549872210996509803678
|
||||||
|
43456990165789787656787103401234901300123418712101
|
50
resources/2024/day8.txt
Normal file
50
resources/2024/day8.txt
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
........................E...j......W..........L...
|
||||||
|
............................O........E.........L..
|
||||||
|
..q......O...........l....................K.......
|
||||||
|
............q...................HM......W.........
|
||||||
|
................................1..H...........IW.
|
||||||
|
....................5.............................
|
||||||
|
..........k........M...wl............6............
|
||||||
|
.....O.......w...k.....5.8..l......K.........o.6..
|
||||||
|
.......k....w.........5.........R.....o........K..
|
||||||
|
.....q..X..............j........E...I.........K...
|
||||||
|
............O..........E........................H.
|
||||||
|
................Mn.h2.w.p....................H....
|
||||||
|
..................p.......a............j.....L....
|
||||||
|
.....X...l.p.....................m.........W..6...
|
||||||
|
..Xq................A..................R..m.......
|
||||||
|
.........................i..........a..........R..
|
||||||
|
...........u.....................a........I.....2.
|
||||||
|
k..............A..n.........R.................o...
|
||||||
|
................n.................Qo..............
|
||||||
|
..........u.A.........h........2..................
|
||||||
|
...5.......Y.....p...............iN...............
|
||||||
|
1...x.....................i.......................
|
||||||
|
........M..............2.....Qi...................
|
||||||
|
...............................I..e...............
|
||||||
|
......u......A...........m..........h.............
|
||||||
|
.......1...........U.............Qm.......j.......
|
||||||
|
.......X.......................................9..
|
||||||
|
.....u........U.......Y...........................
|
||||||
|
.............................h.e..................
|
||||||
|
..................4....e......Q.....L....N........
|
||||||
|
.1..................4.......................y8....
|
||||||
|
.........Y................................8.N.....
|
||||||
|
............P.0J...........3..........8y..........
|
||||||
|
....V3P..........J................................
|
||||||
|
............U..P...7x...........e.................
|
||||||
|
....................J...............r...9.........
|
||||||
|
.........0.V......Y...............................
|
||||||
|
...............V.4................................
|
||||||
|
..........V..........................n............
|
||||||
|
..............v........7..........................
|
||||||
|
...........U..........J.......7...................
|
||||||
|
.....v........7..........................a........
|
||||||
|
.......................................r..........
|
||||||
|
...........0.......x................y.............
|
||||||
|
............6..v.x.....................N..........
|
||||||
|
...........P......................................
|
||||||
|
........3.......................r......4..........
|
||||||
|
..............3......................y............
|
||||||
|
................................................9.
|
||||||
|
.................................................9
|
1
resources/2024/day9.txt
Normal file
1
resources/2024/day9.txt
Normal file
File diff suppressed because one or more lines are too long
114
src/pladcl/2024/day9/part1.pdl
Normal file
114
src/pladcl/2024/day9/part1.pdl
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
state read_file
|
||||||
|
return_if(`ln` < 48 or `ln` > 57)
|
||||||
|
|
||||||
|
`ln48-` # number of blocks
|
||||||
|
`lz+` # plus offset
|
||||||
|
`s1` #
|
||||||
|
|
||||||
|
#`lzn[ ]nl1n10an`
|
||||||
|
for '!' in `lz` to `l1` do
|
||||||
|
#`l!n`
|
||||||
|
array_set('X', `l!`, `lb`)
|
||||||
|
end
|
||||||
|
|
||||||
|
`l1sz` # update size
|
||||||
|
|
||||||
|
inc('b')
|
||||||
|
|
||||||
|
set_state(read_blank)
|
||||||
|
end
|
||||||
|
|
||||||
|
state read_blank
|
||||||
|
return_if(`ln` < 48 or `ln` > 57)
|
||||||
|
|
||||||
|
`ln48-` # number of blocks
|
||||||
|
`lz+` # plus offset
|
||||||
|
`s1` #
|
||||||
|
|
||||||
|
#`lzn[ ]nl1n10an`
|
||||||
|
for '!' in `lz` to `l1` do
|
||||||
|
array_set('X', `l!`, -1)
|
||||||
|
end
|
||||||
|
|
||||||
|
`l1sz` # update size
|
||||||
|
|
||||||
|
set_state(read_file)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
interrupt program_start
|
||||||
|
`0sz` # disk size
|
||||||
|
`0sb` # block count
|
||||||
|
end
|
||||||
|
|
||||||
|
interrupt program_end
|
||||||
|
|
||||||
|
#`lzp`
|
||||||
|
#`lbp`
|
||||||
|
|
||||||
|
#print_disk()
|
||||||
|
`[disk read]n10an`
|
||||||
|
|
||||||
|
`0s0`
|
||||||
|
|
||||||
|
for '!' in `lz1-` to 0 step -1 do
|
||||||
|
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`s1`
|
||||||
|
|
||||||
|
if `l1` != -1 then
|
||||||
|
# find a spot to put this
|
||||||
|
next_open_spot()
|
||||||
|
# if there's no more then break
|
||||||
|
if `l!` < `l0` then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
# move this back
|
||||||
|
array_set('X', `l0`, `l1`)
|
||||||
|
#array_set('X', `l!`, -1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
`l!1+sz`
|
||||||
|
|
||||||
|
#print_disk()
|
||||||
|
`[disk fragmented]n10an`
|
||||||
|
|
||||||
|
0
|
||||||
|
for '!' in 0 to `lz` do
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`l!*`
|
||||||
|
`+`
|
||||||
|
end
|
||||||
|
|
||||||
|
`p`
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function next_open_spot
|
||||||
|
|
||||||
|
inc('0')
|
||||||
|
while array_get('X', `l0`) != -1 do
|
||||||
|
inc('0')
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function print_disk
|
||||||
|
|
||||||
|
for '!' in 0 to `lz` do
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`s1`
|
||||||
|
if `l1` == -1 then
|
||||||
|
`[.]n`
|
||||||
|
end
|
||||||
|
if `l1` > -1 then
|
||||||
|
`l1n`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
`10an`
|
||||||
|
|
||||||
|
end
|
142
src/pladcl/2024/day9/part2.pdl
Normal file
142
src/pladcl/2024/day9/part2.pdl
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
|
||||||
|
state read_file
|
||||||
|
return_if(`ln` < 48 or `ln` > 57)
|
||||||
|
|
||||||
|
`ln48-` # number of blocks
|
||||||
|
`lz+` # plus offset
|
||||||
|
`s1` #
|
||||||
|
|
||||||
|
#`lzn[ ]nl1n10an`
|
||||||
|
for '!' in `lz` to `l1` do
|
||||||
|
#`l!n`
|
||||||
|
array_set('X', `l!`, `lb`)
|
||||||
|
end
|
||||||
|
|
||||||
|
# store the size of this block
|
||||||
|
array_set('Y', `lb`, `ln48-`)
|
||||||
|
|
||||||
|
`l1sz` # update size
|
||||||
|
|
||||||
|
inc('b')
|
||||||
|
|
||||||
|
set_state(read_blank)
|
||||||
|
end
|
||||||
|
|
||||||
|
state read_blank
|
||||||
|
return_if(`ln` < 48 or `ln` > 57)
|
||||||
|
|
||||||
|
`ln48-` # number of blocks
|
||||||
|
`lz+` # plus offset
|
||||||
|
`s1` #
|
||||||
|
|
||||||
|
#`lzn[ ]nl1n10an`
|
||||||
|
for '!' in `lz` to `l1` do
|
||||||
|
array_set('X', `l!`, -1)
|
||||||
|
end
|
||||||
|
|
||||||
|
`l1sz` # update size
|
||||||
|
|
||||||
|
set_state(read_file)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
interrupt program_start
|
||||||
|
`0sz` # disk size
|
||||||
|
`0sb` # block count
|
||||||
|
end
|
||||||
|
|
||||||
|
interrupt program_end
|
||||||
|
|
||||||
|
#`lzp`
|
||||||
|
#`lbp`
|
||||||
|
|
||||||
|
#print_disk()
|
||||||
|
`[disk read]n10an`
|
||||||
|
|
||||||
|
`0s0`
|
||||||
|
|
||||||
|
for '!' in `lz1-` to 0 step -1 do
|
||||||
|
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`s1`
|
||||||
|
|
||||||
|
if array_get('X', `l!1-`) != `l1` and `l1` != -1 then
|
||||||
|
|
||||||
|
array_get('Y', `l1`)
|
||||||
|
`sw` # width
|
||||||
|
|
||||||
|
# find a spot to put this
|
||||||
|
next_open_spot()
|
||||||
|
`s0`
|
||||||
|
# if there's no more then break
|
||||||
|
if `l0` != -1 and `l0` <= `l!` then
|
||||||
|
`l1pst`
|
||||||
|
for '?' in 0 to `lw` do
|
||||||
|
array_set('X', `l0l?+`, `l1`)
|
||||||
|
array_set('X', `l!l?+`, -1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#print_disk()
|
||||||
|
`[disk fragmented]n10an`
|
||||||
|
|
||||||
|
0
|
||||||
|
for '!' in 0 to `lz` do
|
||||||
|
if array_get('X', `l!`) != -1 then
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`l!*`
|
||||||
|
`+`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
`p`
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function next_open_spot
|
||||||
|
inc('0')
|
||||||
|
|
||||||
|
`0sc` # current -1 count
|
||||||
|
|
||||||
|
for '-' in array_get('Z', `lw`) to `lz` do
|
||||||
|
|
||||||
|
if array_get('X', `l-`) == -1 then
|
||||||
|
|
||||||
|
inc('c')
|
||||||
|
#`lcn[ ]nlwpst`
|
||||||
|
|
||||||
|
if `lc` == `lw` then
|
||||||
|
array_set('Z', `lw`, `l-`)
|
||||||
|
return `l-lc-1+`
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
if array_get('X', `l-`) != -1 then
|
||||||
|
`0sc`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
array_set('Z', `lw`, `lz1-`)
|
||||||
|
-1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function print_disk
|
||||||
|
|
||||||
|
for '!' in 0 to `lz` do
|
||||||
|
array_get('X', `l!`)
|
||||||
|
`s1`
|
||||||
|
if `l1` == -1 then
|
||||||
|
`[.]n`
|
||||||
|
end
|
||||||
|
if `l1` > -1 then
|
||||||
|
`l1n`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
`10an`
|
||||||
|
|
||||||
|
end
|
Reference in New Issue
Block a user