Skip to main content
1 of 2
Neil
  • 177.2k
  • 12
  • 74
  • 281

Charcoal, 38 bytes

XF³²«F…·±ιιF…·±ιι«Jκλ›⁼№KMX¹⁼KKX»UMKAX

Try it online! Link is to verbose version of code. According to my comment on the Sandbox post I can do this in 37 bytes but unfortunately my computer rebooted to install updates and I didn't save my solution. Explanation:

X

Output the central X.

F³²«

Grow the snowflake 31 times. (The first loop has no effect since it only checks one square.)

F…·±ιιF…·±ιι«

Check a larger square each time. (This is golfier than hardcoding the size.)

Jκλ

Jump to each position in the square.

›⁼№KMX¹⁼KKX

If the cell does not yet have an X but it has one neighbouring X then print a -.

»UMKAX

After checking the square, change all the -s to Xs.

Neil
  • 177.2k
  • 12
  • 74
  • 281