Advertisement
musifter

AoC 2024, day 9, part 1 (dc)

Dec 27th, 2024
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.27 KB | Source Code | 0 0
  1. # Command: dc -fdc-p1.dc <input
  2.  
  3. # Unpack input onto stack
  4. ?
  5. [
  6.     10~r
  7.     d0<L
  8. ] dsLx +
  9.  
  10. [digits unpacked: ]nzps.
  11. dsl1                                # left = start (size of file #0); stack: file idx next ...
  12. [
  13.     r3R +                           # idx += next (gap); idx file nextNext ...
  14.     3R                              # i=next idx file ...
  15.     [
  16.         rd 4Rd 3R:d                 # disk(idx)=file; file idx i
  17.         r1+                         # idx++ file i
  18.         3R 1- d0<I                  # i--; loop
  19.     ] dsIx +                        # idx file
  20.  
  21.     r1+                             # file++ idx next rest
  22.     z2<L
  23. ] dsLx s.
  24.  
  25. ll1-                                # stack: left right
  26. [
  27.     rdd;d r0r:d                     # disk(right) right left; disk(right) = 0
  28.     3R d3R r:d                      # disk(left) = disk(right); stack: left right
  29.  
  30.     [
  31.         1+ d;d 0!=L                 # inc left until not zero
  32.     ] dsLx
  33.  
  34.     r
  35.     [
  36.         1- d;d 0=R                  # dec right until zero
  37.     ] dsRx
  38.  
  39.     d3Rd3R >M                       # loop while (right > left); left right
  40. ] dsMx
  41.  
  42. 0r                                  # i sum=0
  43. [
  44.     dd;d * 3R+                      # sum += disk(i) * i
  45.     r1- d0<L
  46. ] dsLx +
  47.  
  48. [Part 1: ]np
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement