Advertisement
musifter

AoC 2023, day 14, part 1 (dc)

Dec 14th, 2023 (edited)
1,184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.08 KB | Source Code | 0 0
  1. # Command: perl -pe's/(.)/$1 /g;y/.O#/012/' <input | dc -fpart1.dc
  2.  
  3. ?
  4. zdsn                                # n = size; i = n
  5. [
  6.     d 2 r:a                         # a(i) = 2
  7.     1- d0<I
  8. ] dsIx
  9. +                                   # clear i (+0)
  10.  
  11. [
  12.     [
  13.         z d;a 3* 3R+ r:a            # a(z) = 3*a(z) + top
  14.         z0<L
  15.     ] dsLx
  16.     ? z0<M
  17. ] dsMx
  18.  
  19. [ lc1+sc ] sC
  20.  
  21. # Score: i h a(i) -> i h a(i)
  22. [
  23.     rd lcd                          # a(i) h  h c c
  24.     3R2* r- 1+ *                    # a(i) h  c*(2h-c+1)
  25.     2/
  26.     ls+ss
  27.     0sc
  28.     r
  29. ] sS
  30.  
  31. ln                                  # i=n
  32. [
  33.     d;a 0r                          # i h=0 a(i)
  34.     [
  35.         3~                          # h a(i)=a(i)/3 val=a(i)%3
  36.         d 1=C                       # count if val == 1
  37.           2=S                       # score if val == 0; stack: h a(i)
  38.         r1+r                        # h++
  39.         d 0<H                       # loop if a(i) non-zero
  40.     ] dsHx
  41.  
  42.     # stack: i h 0
  43.     *+                              # clear 2 (+ 0*h)
  44.     1- d0<I
  45. ] dsIx
  46.  
  47. [Part 1: ]nlsp
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement