JavaScriptの(ES6)、114の 106 105 104 103バイト
n=>(g=x=>v=x*2>w?w-x:x,F=x=>~y?`#
`[~x?(h=g(x--))*g(y)>0&h+v!=n|n>h+v:(y--,x=w,2)]+F(x):'')(y=w=--n*3)
オンラインでお試しください!
どうやって?
これにより、文字ごとに出力が構築されます。
入力n与えられると、以下を計算します。
n′= n − 1w = 3 n′
(x 、y)各文字について、を計算します:(h 、v )
h = w / 2 − | x − w / 2 |v = w / 2 − | y− w / 2 |
八角形に属するセルは、次の条件のいずれかを満たします。
- ( OR)AND(下の赤)h = 0v = 0H + V ≥ N′
- h + v = n′(下のオレンジ色)
たとえば、(および)の場合:n = 4n′= 3
(0 、0 )(0 、1 )(0 、2 )(0 、3 )(0 、4 )(0 、4 )(0 、3 )(0 、2 )(0 、1 )(0 、0 )(1 、0 )(1 、1 )(1 、2 )(1,3)(1,4)(1,4)(1,3)(1,2)(1,1)(1,0)(2,0)(2,1)(2,2)(2,3)(2,4)(2,4)(2,3)(2,2)(2,1)(2,0)(3,0)(3,1)(3,2)(3,3)(3,4)(3,4)(3,3)(3,2)(3,1)(3,0)(4,0)(4,1)(4,2)(4,3)(4,4)(4,4)(4,3)(4,2)(4,1)(4,0)(4,0)(4,1)(4,2)(4,3)(4,4)(4,4)(4,3)(4,2)(4,1)(4,0)(3,0)(3,1)(3,2)(3,3)(3,4)(3,4)(3,3)(3,2)(3,1)(3,0)(2,0)(2,1)(2,2)(2,3)(2,4)(2,4)(2,3)(2,2)(2,1)(2,0)(1,0)(1,1)(1,2)(1,3)(1,4)(1,4)(1,3)(1,2)(1,1)(1,0)(0,0)(0,1)(0,2)(0,3)(0,4)(0,4)(0,3)(0,2)(0,1)(0 、0 )