読者です 読者をやめる 読者になる 読者になる

hexagon

anarchy golf - hexagon 2nd fixed
atom5個分で書けてしまうCL最強ですね

(format t"~{ ~*~#@{   ~}~:*~#@*__~#@{/  \\__~}~#@*~*
~}~:*~{/  \\~#@*~#@{__/  \\~}~:*~#@*~#@{__/  \\~}
~:*\\__/~#@*~#@{  \\__/~}~:*~#@*~#@{  \\__/~}
~}~:*~{~*~^~:*~#@* ~#@{   ~}~#@*~*~#@{  \\__/~}
~}"(make-list(read)))

というネタコードを書いてみたものの, 処理系によって結果に差が出てしまった。
CLISP, ClozureCL, LispWorks(personal)だと

$ clisp hexagon.l
3
       __
    __
 __
/  \__/  \__/  \
\__/  \__/  \__/
/  \__/  \
\__/  \__/
/  \
\__/
   \__/  \__/
   \__/

残念な感じ。SBCL, ECL, ABCL, xyzzyは想定通り。

$ sbcl --script hexagon.l
3
       __
    __/  \__
 __/  \__/  \__
/  \__/  \__/  \
\__/  \__/  \__/
/  \__/  \__/  \
\__/  \__/  \__/
/  \__/  \__/  \
\__/  \__/  \__/
   \__/  \__/
      \__/

~{ ~}の中の~#@*の挙動が違うっぽい。

判別コード

(format t "~{~#@*~:*~A~:*~#@* ~}" '(1 2 3 4 5))