Wprowadzenie
Możesz znać i kochać swoje normalne koło jednostek. Ale matematycy są szaleni i dlatego wyodrębnili tę koncepcję do dowolnego punktu, który spełnia x*x+y*y=1
. Ponieważ kryptografowie 1 są również dziwni, uwielbiają skończone pola, a czasem skończone pierścienie (to nie jest tak, że mają duży wybór), więc połączmy to!
Wyzwanie
Wejście
Dodatnia liczba całkowita większa niż jedna w twoim ulubionym kodowaniu. Nazwijmy ten numer n.
Wynik
Wyprowadzisz „obraz” (składający się z n razy n znaków) modułu koła modulo liczbę całkowitą wejściową jako ASCII-Art, używając „X” (łaciński X wielkich liter) i „” (spacja). Końcowe spacje i znaki nowej linii są dozwolone.
Więcej szczegółów
Musisz objąć układ współrzędnych od dolnego lewego do górnego prawego. Ilekroć punkt spełnia równanie okręgu, umieść X w tej pozycji, w przeciwnym razie umieść spację.
Warunkiem punktu należy uznać za część granicy okręgu jest:
mod(x*x+y*y,n)==1
.
Oto krótka ilustracja układu współrzędnych:
(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)
Jeśli ci to pomoże, możesz także odwrócić kierunek dowolnej osi, ale przykłady zakładają taką orientację.
Kto wygrywa?
To jest golf golfowy, więc wygrywa najkrótszy kod w bajcie! Dozwolone są tylko domyślne metody We / Wy, a wszystkie standardowe luki są zabronione.
Przykłady
Wejście: 2
X
X
Wejście: 3
X
X
XX
Wejście: 5
X
X
X X
Wejście: 7
X
X X
X X
X
X X
Wejście: 11
X
XX
X X
X X
XX
X
X X
Wejście: 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 Proponuję spojrzeć na mój profil, jeśli się tutaj zastanawiasz.
Odpowiedzi:
Bash + GNU Utilities, 59
Dane wejściowe
n
podane jako parametr wiersza polecenia. Oś Y jest odwrócona.Wypróbuj online .
źródło
Oktawa ,
4544 bajtówWypróbuj online!
źródło
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. W niektórych systemach Octave traktuje postać0
jak spacjęHaskell , 68 bajtów
Wypróbuj online! Oś Y jest odwrócona. Użycie:
f 42
zwraca ciąg rozdzielany znakiem nowej linii.Jest to lista zagnieżdżona zrozumienie gdzie zarówno
x
iy
są rysowane z zakresu[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
jest krótszą formąif mod(x*x+y*y)n==1 then 'X' else ' '
. Zrozumienie listy przekształca się w listę ciągów, która jest przekształcana w pojedynczy ciąg oddzielony znakiem nowej liniiunlines
.źródło
Mathematica,
5648 bajtówEdycja: Podziękowania dla Grega Martina i Martina Endera za oszczędność 8 bajtów.
Oryginalne rozwiązanie:
źródło
X
:)Array
iNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
jest najkrótszy.If
jest ani,True
alboFalse
potrzebujesz czwartego argumentu, albo pozostaje on bezwartościowy, aleIf[False,_]
zwracaNull
. Dziwne.Array
ale nie pomyślałem o ustawieniu argumentu na zmienną.CJam , 23 bajty
Wypróbuj online!
źródło
JavaScript (ES6), 81 bajtów
Oś Y jest odwrotnością OP.
źródło
Röda , 74 bajty
Wypróbuj online!
Nie golfowany:
źródło
Python 3 ,
8783 bajtówWypróbuj online!
Oś Y jest odwrócona
źródło
Galaretka ,
1413 bajtówOś X jest odwrócona.
Wypróbuj online!
Jak to działa
źródło
dc , 79 bajtów
y
-Działający jest odwrócony natomiastx
-działający nie jest.Wypróbuj online!
źródło
MATL , 13 bajtów
Pochodzenie znajduje się w lewym górnym rogu. Tak więc wynik jest odwrócony do góry nogami w porównaniu do przykładów w wyzwaniu.
Wypróbuj w MATL online!
Wyjaśnienie
źródło
Python 3 , (
1029895 bajtów)oś y odwrócona
Wypróbuj online!
źródło
p(end=' 'if(i*i+j*j)%n-1else'X')
dla 95 bajtówLithp , 125 bajtów
Podział linii dla czytelności.
Wypróbuj online!
Nie najkrótszy. Myślę, że potrzebuję jakiegoś skróconego modułu. Zobacz link Wypróbuj online, aby uzyskać dodatkowe wyjaśnienia, wersję bez golfa i niektóre testy. Aby uzyskać najlepsze wyniki, rozwiń okno wyjściowe, aby zobaczyć więcej.
źródło
Python 3 , 82 bajty
Wypróbuj online!
źródło
GNU APL , 41 znaków, 59 bajtów
Odczytuje liczbę całkowitą i wyświetla okrąg.
Nie golfił
źródło
Haskell, 115 bajtów
Oś Y jest odwrócona.
Wypróbuj online!
Te wszystkie nawiasy mnie denerwują ...
Wyjaśnienie
źródło
map
na<$>
, prawda?J , 20 bajtów
Wypróbuj online!
źródło
GolfScript , 34 bajty
Wypróbuj online!
Naprawdę nie lubię używać zmiennych ...
źródło