2 of 12 deleted 468 characters in body

Hexagony, 218 92 bytes

1}?}=&\)=}<..{/....>(<.&/=}&<..=.}.>*{&={\}.=...@!%=<.>*/...................................

The first ever non-trivial (i.e. non-linear) Hexagony program! It is based on the same squared-factorial approach as Sp3000's Labyrinth answer. The solution is not particularly well golfed, because I didn't know how much space it would take up - so I just started on a side length of 10. I'll now see how small of a hexagon I can fit it in (currently 7; I think 5 should be possible) and will then add an explanation.

In the meantime, here is the unfolded code so you have something more interesting to look at. First, Hexagony pads the code to the next centred hexagonal number with ., which is 127. It then rearranges the code into a regular hexagon of the corresponding size:

       1 } ? } = & \
      ) = } < . . { /
     . . . . > ( < . &
    / = } & < . . = . }
   . > * { & = { \ } . =
  . . . @ ! % = < . > * /
 . . . . . . . . . . . . .
  . . . . . . . . . . . .
   . . . . . . . . . . .
    . . . . . . . . . .
     . . . . . . . . .
      . . . . . . . .
       . . . . . . .

Yes... still very suboptimal...