mirror of
https://git.plasmaofthedawn.com/adventofcode.git
synced 2026-10-18 19:49:29 -05:00
part 9
This commit is contained in:
1 parent
90aff2d873
commit
6b64aa8faa
5 files changed
+357
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
6337613674436833695582382518294574934721895775456926659050519789764499137091974516817593123529825470413735998773313821249746165140476827548333979879759812148140743921984858367387865689863575979767978384602135617653231357745451442716162787988827217792125086367824652239497919721686553336289590824034825884491882728622562067753798821229222238807634124749916752577072651378955553992845307918307276391238273773149858396433832536796653365434709657851887396187578778147166906832666361736921666530215593938020386798211757213535118020656880772626853567534823537521847840542462424239748076442664335159933397986757683414553370933017533841909225785682535581657913534751914590354573479543352482677664279490115563578845916997385280799060446627827972734570759842272566609483169585119611369745574079877574611920292074449221344989775049422092807055209772581092501625426515216037533372713253769756161167528724961425674338433856921993913658367042577497436930301681312780243028924226184437743980832960764956152123711024813868188023445957797073319557834842443457408060431584672765711965523592339064155945688420399677786021375036865224718236192794168244218132331879653238514185879711274422704721314129454939677194798258512282384257688549556871296166858544234847196990249480549228468620477732643536689838393877978653367792853453997762592631241338636138577555428914232648823466514071894652137678142034849239193626153640623580414314608933385485612012888459733812386760439427452815938894615323396842132211755866147610694370823973397748963732281746466628818129365432979699941761269528742324281144556379381879602911724569887421245076318843809377436853841020844590787517655729552955292366331147517060174571596182569363324916905792827650803161491453136021278077732064374448109498165846527088615498892332771430958179814356621939482129587840825717107138658080991769344985444860919820564023672497821693314755599976209047988027535412418173944146379780263754526214261017834795745288115763115420595437959121698079541886909440959071743761324933549055785895219883434371956470166162332913626974228698704867909040649016617460867032767038334727116689244913263370265020373034542849904912599647836283459162238825918961705866907222166252213569835943736588468231414457382040649035476988352594163315317533816572151422835818584798813953851735242330898787799654338389819473342688805893283467278648262129884651697935311570182570622882847035353690402079255041929980106820933987229229797544269317587273137530758375497634699083283818553718955173431710764611483099989260285267944525422740201440336499923419596970234642786695265316332262177054801980634357789526362333385795223688334671859856597460299593595342948524369087665258874015146296241079817536554214141611547952197222448591679959466790128097793753463968675487268040477815563380229164213672752215208397193598924987982747832046393487916058272183247276523097304784635757381389468220157974675179325452839698486360399879695439645913991513175369124373993030541020107278592224606843141533658010212677209043325490342134728924457069965191109858378318612965799852635497747794734595236056575848591924766220818282475324396727508923606980769458725299525452612238764560262657775582924569776483862349887068324449156297506644312010698479354773245797667563279586421294657685887842714452735721406358806171998745643329816772286796704744766044588635885245655459774311291948625491629489845688426449351717832871305285577753164547112747414863694575184763986239102380914887326641428026877699225992392096482370418830381415159027914953351339474421536726145911393866697198669419803537365630324763404171851150754014952414412764421984874654951033761733339938562539501446678133468715754993394758543046223523398728955356737781406931429746223633763241354625939226463718409470443784758784373146313839928768614814211356253038934558927790904988453344509018747586929116183883508082777047599959667039225085656443324675746726742070671570757088224324721174549372663665357073604929544480355015119614695352475587896476298629578751175152953418694340237315682094281425544939961496671928705760203087589687943595183450878840612944545990131498239234836114902680973922971833131647941447156647709468389679862137111593607085798425435736388659127388489737118418537272479942534595188821602597196231331570739573219060339186363023917360728735156330123729551057656522303564363389388580584548939620728350317592847949877699604391352991731027339689607733987355581433793686246693841298838454573798145112168184911056903380103939467378844737779330194582116721272190126779182733559651836358413812266428668253391218604697749045971951622863863588909757411613156843452329293637464367447412392465939681589644859070551682234527516285233194458768183747577595703213148321859615511124931012101096951580915748936348216536567577647345618573868040994546908948496431144262585963718473204983249712109511962363539684909657287652765145553168177329822059904713775018257475153084721036958345931122317816828966716917929036331813946978532772968156626894887060457595911112698Line truncated
|
||||
@@ -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
|
||||
@@ -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