Weź jako liczbę całkowitą dodatnią n i wyślij macierz szachownicy n-na-n składającą się z 1 i 0 .
Lewa górna cyfra powinna zawsze wynosić 1 .
Przypadki testowe:
n = 1
1
n = 2
1 0
0 1
n = 3
1 0 1
0 1 0
1 0 1
n = 4
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Formaty wejściowe i wyjściowe są opcjonalne. Wyprowadzanie macierzy jako listy list jest akceptowane.
Odpowiedzi:
Galaretka , 4 bajty
52 sekundy!
Wypróbuj online!
źródło
MATL , 5 bajtów
Wypróbuj w MATL online!
Wyjaśnienie
Rozważ dane wejściowe
4
jako przykład.źródło
Japt , 6 bajtów
Przetestuj online! (Wykorzystuje
-Q
flagę do łatwiejszej wizualizacji)Wyjaśnienie
Interesującą rzeczą do odnotowania jest to, że nie
v
jest to wbudowane „podzielne przez 2”. Zamiast tego jest to funkcja „podzielna przez X”. Jednak w przeciwieństwie do większości języków golfowych, funkcje Japt nie mają ustalonej arity (mogą przyjmować dowolną liczbę poprawnych argumentów). Gdy podano 0 poprawnych argumentów,v
zakłada się, że chciałeś2
, i działa dokładnie tak, jak podano,2
zamiast niczego.źródło
V ,
16, 15 bajtówWypróbuj online!
Hexdump:
źródło
Haskell ,
50413938 bajtówPodziękowania dla nich i xnor za pomoc w goleniu w sumie
910 bajtówAlternatywnie, dla jednego bajtu więcej:
lub:
Prawdopodobnie nieoptymalne, ale czyste, proste podejście.
źródło
concat.repeat
jestcycle
:n!l=take n$cycle l
. Jeśli pójdziesz pointfree oszczędza jeszcze jeden bajt:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
lub coś podobnego. ale Haskell wydaje się wnioskować niewłaściwy typr
? Działa z wyraźnym pisaniemf n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
nie pomogło. Ani nieRank2Types
lubRankNTypes
. Czy wiesz co się tam dzieje?APL (Dyalog) , 8 bajtów
Wypróbuj online!
Wyjaśnienie
Nazwijmy argument
n
.To tworzy matrycę
Następnie
2|
pobiera moduł 2 macierzy (wektoryzuje), po czym~
przyjmuje NOT wyniku.źródło
Mathematica, 25 bajtów
źródło
JavaScript ES6,
55545146 bajtówZapisano 1 bajt dzięki @Neil
Zaoszczędzono 2 bajty dzięki @Arnauld
Wypróbuj online!
Dane wyjściowe są tablicą tablic. Zakresy JavaScript są dość niewygodne, ale używam,
[...Array(n)]
który generuje tablicę rozmiarówn
źródło
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Siatkówka ,
3330 bajtówWypróbuj online! Objaśnienie: Pierwszy stopień przekształca dane wejściowe w jednoargumentowe za pomocą
1
s (wygodnie!), Podczas gdy drugi stopień przekształca wartość w kwadrat. Trzeci stopień odwraca bity w każdym rzędzie, podczas gdy ostatni stopień odwraca bity w naprzemiennych rzędach. Edycja: Zapisano 3 bajty dzięki @MartinEnder.źródło
$`1$'
jest po prostu$_
.$_
, dzięki!MATL , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
Uwaga: zacząłem rozwiązywać to w MATL po opublikowaniu wyzwania.
źródło
:&+o~
Y
instrukcji zmodyfikowanych, których używa @LuisMendo.Brachylog , 15 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Clojure, 36 bajtów
Tak, odpowiednie narzędzie do pracy.
źródło
05AB1E ,
97 bajtów-2 bajty dzięki Emignie
Wypróbuj online!
Wyjaśnienie
źródło
»
ponieważ dane wyjściowe listy list są w porządku, a także możesz je usunąćs
.Java (OpenJDK 8) ,
8077 bajtów-3 bajty dzięki Kevin Cruijssen
Wypróbuj online!
Och, spójrz, odpowiedź w rozsądnej długości, z dużą ilością zabawnych operatorów.
lambda, która przyjmuje int i zwraca String. Działa przy użyciu numeru wiersza i numeru kolumny przy użyciu / i% w celu ustalenia, która wartość powinna być, mod 2;
Nie golfowany:
źródło
(i++/j+i%j)%2
na,i++/j+i%j&1
więc nie będziesz potrzebować tych nawiasów. Co sprawia, że całkowity 1 bajt jest krótszy niż moje zagnieżdżone rozwiązanie for-loop (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), więc daje +1 ode mnie. :)Węgiel drzewny, 8 bajtów
Wypróbuj online! Objaśnienie: To z grubsza przekłada się na następujący pełny kod (niestety deverbosifier obecnie dołącza niepotrzebny separator):
źródło
Pyth , 9 bajtów
Spróbuj tego!
kolejne 9-bajtowe rozwiązanie:
Spróbuj!
źródło
J , 9 bajtów
Wypróbuj online!
źródło
Mathematica, 23 bajty
źródło
Oktawa , 24 bajty
Wypróbuj online!
Lub tej samej długości:
Wypróbuj online!
źródło
R ,
3837 bajtówWypróbuj online!
-1 bajt dzięki Giuseppe
Korzysta z reguł recyklingu R, po pierwsze, podczas tworzenia macierzy, a po drugie, dodając 0: (n-1) do tej macierzy.
źródło
t
i zamiast tego konstruując macierzbyrow=T
, tj.(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
jest o kilka bajtów krótszy :)Swi-Prolog, 142 bajty.
Wypróbuj online - http://swish.swi-prolog.org/p/BuabBPrw.pl
Wyświetla listę zagnieżdżoną, więc reguły mówią:
t()
jest przełącznikiem, powoduje, że 0 -> 1 i 1 -> 0.r()
udaje się dla pojedynczego wiersza, który jest rekurencyjnym sprawdzaniem w dół wiersza, że jest to tylko jeden zera i zera.f()
rekurencyjnie sprawdza wszystkie wiersze, czy mają odpowiednią długość, czy są poprawnymi wierszamir()
i czy każdy wiersz zaczyna się od różnej wartości 0/1.c(N,C)
mówi, że C jest prawidłową szachownicą o rozmiarze N, jeśli liczba wierszy (list zagnieżdżonych) wynosi N, a pomocnik f się powiedzie.Przypadki testowe:
źródło
C
696963 bajtówDzięki @Kevin Cruijssen za uratowanie dwóch bajtów i @ceilingcat za uratowanie czterech bajtów!
Wypróbuj online!
źródło
printf("%d "
, ponieważ jest to kolejna poprawna metoda wyniku.(j+++i)%2
sięj+++i&1
w celu usunięcia tych nawiasów.QBIC , 19 bajtów
Wyjaśnienie
źródło
Brachylog , 19 bajtów
Wypróbuj online!
źródło
PHP , 56 bajtów
Dane wyjściowe jako ciąg
Wypróbuj online!
PHP , 66 bajtów
Wyjście w postaci tablicy 2 D.
Wypróbuj online!
źródło
CJam , 17 bajtów
Wypróbuj online!
Zwraca listę (link TIO sformatował dane wyjściowe).
źródło
Bash + rs, 42
Wypróbuj online .
źródło
Cheddar , 38 bajtów
Wypróbuj online!
źródło
/// , 87 bajtów + wejście
Wypróbuj online! (wejście dla 4)
Jednostkowe wejście ws
1
, 95 bajtów + wejścieWypróbuj online! (wejście dla 8)
Jak to działa?
V
iD
są do gry w golfa\/
i//
odpowiednio./*/k#/
i/&1/k#&//&|//
rozdziel dane wejściowe na odpowiednik'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
przesuń wszystkiek
s do/r/S/
blokuS
s są po prostu używane do wypełniania instancji, po których następujek
po/
s, aby nie zostały przeniesione gdzie indziej, aS
następnie są usuwane#
s są następnie przekształcane wr\n
sCiąg
k
s jest zamieniany na naprzemienny1010...
ciągDo
r\n
s zamieniają się1010...\n
sKażda para
1010...\n1010\n
zamienia się w1010...\01010...;\n
Albo
0;
albo1;
są obcięte (ponieważ01010...
łańcuch jest za długi o 1)źródło
Mathematica, 28 bajtów
Czysta funkcja przyjmująca dodatnią liczbę całkowitą jako dane wejściowe i zwracająca tablicę 2D. Używa funkcji okresowej cos² (πx / 2) do generowania 1 i 0.
Dla trochę więcej zabawy, a może 32-bajtowe rozwiązanie
który używa lokalizacji trywialnych zer funkcji zeta Riemanna.
źródło