musifter

AoC 2025 day 6 part 2 (dc)

Dec 6th, 2025 (edited)
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.26 KB | Source Code | 0 0
  1. # Command: sed -e'$!s/ /0/g;$s/\(\S\)/[\1]/g' input | dc -fdc-p2.dc
  2.  
  3. 0 ?                         # line i=0
  4. [
  5.     r d3R r:T               # Table(i) = line
  6.     1+ ? z2=L
  7. ] dsLx
  8.  
  9. zR sn                       # numLines=i; op1 op2 op3 ...
  10. z  so                       # numOpts
  11.  
  12. [ SO z0<L ] dsLx            # store ops on temp O stack
  13. lo [ LO S* 1- d0<L ] dsLx   # reverse stack onto * stack
  14.  
  15. # stack: 0
  16.  
  17. # Process digit: digit i acc -> 0 i acc
  18. [
  19.     3R A*+                  # acc*10+digit i
  20.     r0
  21. ] sP
  22.  
  23. [3Q] sQ
  24.  
  25. # Get next number: 0 -> acc
  26. [
  27.     0d                      # i=0 acc=0
  28.     [
  29.         d;T                 # Table(i) i acc
  30.         A~                  # lastDigit rest i acc
  31.         3Rd 4R r:T          # Table(i) = rest; i lastDigit i acc
  32.         r d0<P              # 0 i acc
  33.         +                   # clear 0
  34.         1+ dln>I
  35.     ] dsIx s.
  36.     d0=Q                    # Force calling loop to quit if 0
  37. ] sN
  38.  
  39. # stack: sum=0 (still)
  40.  
  41. [
  42.     lNx                     # get a number; num1 sum
  43.     [
  44.         lNx                 # num acc sum
  45.         l*x                 # acc := acc op num
  46.         lLx
  47.     ] dsLx +
  48.     +                       # sum += acc
  49.     L*s.                    # pop op and junk
  50.     lMx
  51. ] dsMx
  52.  
  53. [Part 2: ]n +p
Advertisement
Add Comment
Please, Sign In to add comment