Skip to main content
3 of 6
Fixed December 26th-31st
Kevin Cruijssen
  • 131.5k
  • 13
  • 144
  • 384

#05AB1E, 38 37 bytes

25L.ržf12Qže₂‹*iε…[ ]…[@])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
       12Q                # Check if it's equal to 12 (thus December)
     že                   # Push the current day
       ₂‹                 # Check if it's smaller than 26
          *i              # And if both are truthy:
            ε             #  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 again
                     .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