mirror of
https://github.com/plasmaofthedawn/adventofcode.git
synced 2025-08-23 01:42:02 -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