this post was submitted on 02 Dec 2024
1 points (100.0% liked)

Advent Of Code

981 readers
21 users here now

An unofficial home for the advent of code community on programming.dev!

Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

AoC 2024

Solution Threads

M T W T F S S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25

Rules/Guidelines

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

founded 1 year ago
MODERATORS
 

Day 2: Red-Nosed Reports

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://blocks.programming.dev/ if you prefer sending it through a URL

FAQ

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 0 points 3 weeks ago* (last edited 3 weeks ago) (2 children)

Uiua

Uiua is still developing very quickly, and this code uses the experimental tuples function, hence the initial directive.

Try it Live!

# Experimental!
$ 7 6 4 2 1
$ 1 2 7 8 9
$ 9 7 6 2 1
$ 1 3 2 4 5
$ 8 6 4 4 1
$ 1 3 6 7 9
⊜(⊜⋕⊸≠@\s)⊸≠@\n # Partition at \n, then at space, parse ints.

IsSorted ← +⊃(≍⇌⍆.|≍⍆.)        # Compare with sorted array.
IsSmall  ← /××⊃(>0|<4)⌵↘¯1-↻1. # Copy offset by 1, check diffs.
IsSafe   ← ×⊃IsSmall IsSorted  # Safe if Small steps and Ordered.
IsSafer  ← ±/+≡IsSafe ⧅<-1⧻.   # Choose 4 from 5, check again.

&p/+≡IsSafe .            # Part1 : Is each row safe?
&p/+≡(±+⊃IsSafe IsSafer) # Part2 : Is it safe or safer?
[–] [email protected] 0 points 3 weeks ago

This looks so alien! Does it work with the full set? The comment says 5, choose 4, but I guess it’s written as n, choose n-1?

[–] [email protected] 0 points 3 weeks ago (2 children)

How do you write this, not conceptually but physically. Do you have a char picker open at all times?

[–] [email protected] 0 points 3 weeks ago

Haha, you can do it that way, in fact the online Uiua Pad editor has all the operators listed along the top.

But all the operators have ascii names, so you can type e.g. IsSmall = reduce mul mul fork(>0|<4) abs drop neg 1 - rot 1 dup and the formatter will reduce that to IsSmall ← /××⊃(>0|<4)⌵↘¯1-↻1. whenever you save or execute code.

That works in the Pad, and you can enable similar functionality in other editors.

[–] [email protected] 0 points 3 weeks ago (1 children)

i can only imagine doing it with a drawing tablet

[–] [email protected] 0 points 3 weeks ago

I like to assume people using array programming languages just have a crystal ball that they use to call upon magic runes on the screen