前書き
通常の単位円を知っていて、愛しているかもしれません。しかし、数学者は狂っているので、彼らはコンセプトを満足するところまで抽象化しましたx*x+y*y=1
。Cryptographers 1も奇妙であるため、彼らは有限の場と時々有限のリングを愛します(しかし、彼らは多くの選択肢があるわけではありません)。
チャレンジ
入力
お気に入りのエンコードで1より大きい正の整数。この番号をnと呼びましょう。
出力
"X"(大文字のラテンX)と ""(スペース)を使用して、入力整数を法としてASCII-Artとしてモジュレーションする単位円の "picture"(n x n文字で構成される)を出力します。末尾のスペースと改行を使用できます。
詳細
座標系を左下から右上にスパンする必要があります。ポイントが円の方程式を満たしている場合は常に、その位置にXを配置し、そうでない場合はスペースを配置します。
円の境界の一部と見なされるポイントの条件は次のとおり
mod(x*x+y*y,n)==1
です。
ここで座標系の簡単な説明:
(0,4)(1,4)(2,4)(3,4)(4,4)
(0,3)(1,3)(2,3)(3,3)(4,3)
(0,2)(1,2)(2,2)(3,2)(4,2)
(0,1)(1,1)(2,1)(3,1)(4,1)
(0,0)(1,0)(2,0)(3,0)(4,0)
役立つ場合は、軸の方向を逆にすることもできますが、例ではこの方向を想定しています。
誰が勝ちますか?
これはコードゴルフなので、バイト単位の最短コードが勝ちです!デフォルトのI / Oメソッドのみが許可され、すべての標準的な抜け穴は禁止されています。
例
入力:2
X
X
入力:3
X
X
XX
入力:5
X
X
X X
入力:7
X
X X
X X
X
X X
入力:11
X
XX
X X
X X
XX
X
X X
入力:42
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
1 ここで疑問に思っているなら、私のプロフィールを見てみることをお勧めします。