pengantar
Anda mungkin tahu dan menyukai lingkaran unit normal Anda. Tetapi para matematik itu gila dan dengan demikian mereka mengabstraksikan konsep itu ke titik mana pun yang memuaskan x*x+y*y=1
. Karena Cryptographers 1 juga aneh, mereka suka bidang terbatas dan terkadang cincin terbatas (tidak seperti mereka punya banyak pilihan), jadi mari kita gabungkan ini!
Tantangan
Memasukkan
Bilangan bulat positif lebih besar dari satu dalam penyandian favorit Anda. Sebut nomor ini n.
Keluaran
Anda akan menampilkan "gambar" (yang terdiri dari n kali n karakter) dari lingkaran unit modulo input integer sebagai ASCII-Art menggunakan "X" (huruf latin X) dan "" (spasi). Ruang tambahan dan baris baru diizinkan.
Keterangan lebih lanjut
Anda harus menjangkau sistem koordinat dari kiri bawah ke kanan atas. Setiap kali sebuah titik memenuhi persamaan lingkaran, tempatkan X di posisi, jika tidak tempatkan spasi.
Kondisi titik untuk dianggap sebagai bagian dari perbatasan lingkaran adalah:
mod(x*x+y*y,n)==1
.
Berikut ilustrasi singkat sistem koordinat:
(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)
Jika ini membantu Anda, Anda juga dapat membalikkan arah sumbu mana pun, tetapi contoh-contohnya mengambil orientasi ini.
Yang menang?
Ini adalah kode-golf sehingga kode terpendek dalam byte menang! Hanya metode I / O default yang diizinkan dan semua celah standar dilarang.
Contohnya
Input: 2
X
X
Input: 3
X
X
XX
Input: 5
X
X
X X
Input: 7
X
X X
X X
X
X X
Input: 11
X
XX
X X
X X
XX
X
X X
Masukan: 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 Saya sarankan Anda melihat profil saya jika Anda bertanya-tanya di sini.
Jawaban:
Bash + GNU Utilities, 59
Input
n
diberikan sebagai parameter baris perintah. Sumbu-y terbalik.Cobalah online .
sumber
Oktaf ,
4544 byteCobalah online!
sumber
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. Dalam sistem tertentu Oktaf memperlakukan karakter0
sebagai ruangHaskell , 68 byte
Cobalah online! Sumbu y dibalik. Penggunaan:
f 42
mengembalikan string yang dibatasi baris baru.Ini adalah pemahaman daftar bersarang di mana keduanya
x
dany
diambil dari jangkauan[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
adalah bentuk yang lebih pendek dariif mod(x*x+y*y)n==1 then 'X' else ' '
. Pemahaman daftar mengevaluasi ke daftar string yang diubah menjadi string yang dipisahkan oleh baris baru olehunlines
.sumber
Mathematica,
5648 byteSunting: Terima kasih kepada Greg Martin dan Martin Ender karena telah menghemat 8 byte.
Solusi asli:
sumber
X
:)Array
danNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
adalah yang terpendek.If
bukanTrue
atauFalse
, Anda memerlukan argumen keempat atau tetap tidak dievaluasi, tetapiIf[False,_]
kembaliNull
. Aneh.Array
tetapi tidak berpikir untuk mengatur argumen ke variabel.CJam , 23 byte
Cobalah online!
sumber
JavaScript (ES6), 81 byte
Sumbu Y adalah kebalikan dari OP.
sumber
Röda , 74 byte
Cobalah online!
Tidak Terkumpul:
sumber
Python 3 ,
8783 byteCobalah online!
Sumbu-y terbalik
sumber
Jelly ,
1413 byteSumbu x terbalik.
Cobalah online!
Bagaimana itu bekerja
sumber
dc , 79 byte
The
y
-axis terbalik sedangkan thex
sumbu tidak.Cobalah online!
sumber
MATL , 13 byte
Asal ada di kiri atas. Jadi hasilnya terbalik dibandingkan dengan contoh-contoh dalam tantangan.
Coba di MATL online!
Penjelasan
sumber
Python 3 , (
1029895 byte)sumbu y terbalik
Cobalah online!
sumber
p(end=' 'if(i*i+j*j)%n-1else'X')
untuk 95 byteLithp , 125 byte
Linebreak untuk keterbacaan.
Cobalah online!
Bukan yang terpendek. Saya pikir saya perlu semacam modul tulisan cepat. Lihat tautan Try it Online untuk penjelasan lebih lanjut, versi yang tidak disatukan, dan beberapa tes. Untuk hasil terbaik, perluas jendela keluaran untuk melihat lebih banyak.
sumber
Python 3 , 82 byte
Cobalah online!
sumber
GNU APL , 41 karakter, 59 byte
Membaca bilangan bulat dan menampilkan lingkaran.
Tidak disatukan
sumber
Haskell, 115 byte
Sumbu y terbalik.
Cobalah online!
Semua kurung itu agak mengganggu saya ...
Penjelasan
sumber
map
dengan<$>
, kan?J , 20 byte
Cobalah online!
sumber
GolfScript , 34 byte
Cobalah online!
Saya benar-benar tidak suka menggunakan variabel ...
sumber