musifter

AoC 2025, day 4 part 2 (dc)

Dec 5th, 2025
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.23 KB | Source Code | 0 0
  1. # Command: tr '.@' '12' <input | dc -fdc-p2.dc
  2.  
  3. # line x y -> line x y
  4. [
  5.     _3R
  6.     r dF0* 3R d3R+      # roll=150*y+x x y line
  7.     d Sr 1 r:g          # push roll on r; grid(roll) = 1
  8.     3R
  9. ] s@
  10.  
  11. [d] sd
  12.  
  13. 0 Sr                    # Register stack r sentinel
  14.  
  15. 2 ?                     # line y=2
  16. [
  17.     #[line: ]np
  18.     0 r                 # line x=0 y
  19.     [
  20.         A~              # chr line x y
  21.         2=@             # record @ (2); line x y
  22.         r1+r            # line x++ y
  23.         d0<X
  24.     ] dsXx *+
  25.  
  26.     1+                  # y++
  27.     ? z1<Y
  28. ] dsYx s.
  29.  
  30. [ ;g 3R+r ] s+
  31.  
  32. Lr                      # roll
  33. [
  34.     0r                  # roll count
  35.     d F1+ l+x
  36.     d F0+ l+x
  37.     d E9+ l+x
  38.     d  1+ l+x
  39.     d  1- l+x
  40.     d E9- l+x
  41.     d F0- l+x
  42.     d F1- l+x
  43.  
  44.     d3R d3R :n          # neigh(roll)=count; count roll
  45.  
  46.     4>d                 # dup roll if (count < 4)
  47.     s.
  48.  
  49.     Lr d0<L
  50. ] dsLx +
  51.  
  52. [Part 1: ]n zps.
  53.  
  54. # count neigh roll -> count neigh roll neigh
  55. [ rd _4Rr ] sP
  56.  
  57. [ d;n 1- d3=P r:n ] s-
  58.  
  59. [
  60.     lp 1+ sp                # roll ...
  61.     d F1+ l-x
  62.     d F0+ l-x
  63.     d E9+ l-x
  64.     d  1+ l-x
  65.     d  1- l-x
  66.     d E9- l-x
  67.     d F0- l-x
  68.       F1- l-x
  69.  
  70.     z0<M
  71. ] dsMx
  72.  
  73. [Part 2: ]n lpp
Advertisement
Add Comment
Please, Sign In to add comment