Day 4: Printing Department

Megathread guidelines

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

FAQ

  • Quant@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    25 days ago

    Uiua

    Quite simple this one. Part 2 still takes a few seconds because I’m essentially checking off each roll individually.

    Run with example input

    Code
    $ ..@@.@@@@.
    $ @@@.@.@.@@
    $ @@@@@.@.@@
    $ @.@@@@..@.
    $ @@.@@@@.@@
    $ .@@@@@@@.@
    $ .@.@.@.@@@
    $ @.@@@.@@@@
    $ .@@@@@@@@.
    $ @.@.@@@.@.
    ⊜∘⊸≠@\n
    =@@
    
    Rolls ← ⍣(⧻⊚˙⍤)∞⊸⊡1_1
    Removable ← (
      ⬚0⧈Rolls[3_3 1_1 1_1]
      ⊚≤4
    )
    
    Remove ← ⍜⊡(˜↯0⧻)
    
    PartOne ← ⧻Removable
    
    PartTwo ← (
      ⊙0
      ⍥(
        ⊙(⊙+⟜⧻)⟜Removable
        ˜Remove
      )∞
      ◌
    )
    &pf "Part One: "
    &p ⊸PartOne
    
    &pf "Part Two: "
    &p PartTwo
    
    Old Part 2

    Before seeing mykl’s solution this was my solution for part 2

    PartTwoOld ← (
      0⊙0
      ⍢(⊙⊙◌
        ⊙⊸Removable
        +⊙⊸⧻
        ⊙⊸Remove
      | ¬≍◌)
      ⊙⋅◌
    )
    

    It’s basically the same, just that I used a while-do-loop, making the check for the ending condition myself (which took me a bit to get right because I still find loops in Uiua a bit confusing).
    Using the repeat-loop as above also gets rid of the dip’s (⊙). I could’ve removed them here as well but I was already deep in the trouble of getting the loop to work correctly and I liked the little face at the beginning 0⊙0