Advertisement
musifter

AoC 2024, day 25 (dc)

Dec 25th, 2024
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.61 KB | Source Code | 0 0
  1. # Command: tr '.#' '01' <input | dc -fdc-p1.dc
  2.  
  3. [lp1+sp] sC                 # count fitting set
  4. [[lk1+d sk :k] sA] sK       # Change A macro to append to keys
  5.  
  6. 128 ss
  7.  
  8. 2i                          # Binary input
  9. ?
  10. [
  11.     [ll1+ dsl :l] sA 0=K    # Default to append to locks, change to keys if first == 0
  12.  
  13.     # Read in image:
  14.     0d?                     # stack: bitRow line=0 acc=0
  15.     [
  16.         r d2r^ 3R           # bitRow shift line acc
  17.         [
  18.             2~              # lowBit rest shift line acc
  19.             3Rd 3R*         # shift*lowBit shift rest line acc
  20.             5R+_4R          # acc+=shift-bit, tuck back
  21.             ls*             # shift-shift
  22.             r               # rest shift line acc
  23.             d 0<B
  24.         ] dsBx *+           # line acc
  25.  
  26.         1+ ? z2<L           # bitRow line++ acc
  27.     ] dsLx s.
  28.  
  29.     lAx                     # append bitArray
  30.     ? z0<I
  31. ] dsIx
  32.  
  33. Ai                          # decimal
  34. ll                          # l=lock#
  35. [
  36.     lk                      # k=key# l
  37.     [
  38.         d;k 3R d;l          # lock(l) l key(k) k
  39.         3R+                 # sum=lock+key l k
  40.  
  41.         # Test sum for overflow
  42.         0r                  # sum test=0 ...
  43.         [
  44.             64~r2~          # bit7 higher lower-junk test ...
  45.             4R+             # test+=bit7 high low
  46.             3Rs.r           # rest test...
  47.             d 0<R
  48.         ] dsRx +            # sum replaced with test result (sum of every 7th bit)
  49.  
  50.         0=C                 # p++ if test passed (0); l k
  51.         r1- d0<K
  52.     ] dsKx +
  53.     1- d0<L
  54. ] dsLx
  55.  
  56. [Part 1: ]n lpp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement