Skip to main content
2 of 6
added 18 characters in body
Kevin Cruijssen
  • 131.5k
  • 13
  • 144
  • 384

#05AB1E, 33 32 bytes

25L.ržf12Qiε…[ ]…[@])yže.SÌè]5ô»

Try it online or try it online with own specified month / day.

Explanation:

25L                      # Push a list in the range [1,25]
   .r                    # Randomly shuffle it
     žf                  # Push the current month
       12Qi              # If it's equal to 12 (thus December):
           ε             #  Map each value in the list to:
            …[@]         #   Push string "[@]"
            …[ ]         #   Push string "[ ]"
                )        #   Wrap all three into a list: [value,"[@]","[ ]"]
                 y       #   Push the value `y`
                  že     #   Push the current day
                    .S   #   Compare the two values (-1 if y<day; 0 if y==day; 1 if y>day)
                      Ì  #   Increase it by 2 (1 if y<day; 2 if y==day; 3 if y>day)
                       è #   Use it to (0-based) index into the list (with wraparound,
                         #   so the 3 results in the first item)
          ]              # Close the map and if-statement
           5ô            # Split the list into sublists of size 5
             »           # Join each inner list by spaces, and these strings by newlines
                         # (after which the result is output implicitly)
Kevin Cruijssen
  • 131.5k
  • 13
  • 144
  • 384