Dane wejściowe: liczba dodatnia, mniejsza niż 80, od stdin lub jako argument wiersza poleceń.
Wyjście: kwadratowy wzór szachownicy, wielkość liczby wejściowej. Ciemne pola są reprezentowane przez literę „X”, a białe pola przez spację. Lewe górne pole powinno być „X”.
Wymagany jest kompletny program.
Przykłady:
Wejście : 1
Wyjście :
X
Wejście : 8
Wyjście :
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
Odpowiedzi:
Pyth, 13 znaków
Uwaga: Pyth jest o wiele za nowy, aby wygrać. To był jednak fajny golf i pomyślałem, że się nim podzielę.
Wypróbuj tutaj.
Jak to działa:
Zasadniczo używa tego
X
do generowania"X "
lub" X"
naprzemiennie, a następnie powtarza ten ciąg znakówQ
i pobiera pierwszeQ
znaki. To się powtarzaQ
.Jak działa funkcja
X
(przypisuj do)? Pobiera oryginalny ciąg," "
w tym przypadku, lokalizację przypisania,N
w tym przypadku, i znak zastępczy,"X"
w tym przypadku. Ponieważ przypisania Pytha są modułowe, to zastępuje miejsce w miejscuN%2
przezX
i zwraca wynikowy ciąg znaków, który znajduje się zatem"X "
w pierwszym, trzecim itd. Wierszu, a także" X"
w pozostałych.źródło
Golfscript - 17 znaków
Analiza
~
konwertuj dane wejściowe do:N
magazynu int w zmiennej N,{...}
dla każdej wartości [0 ... N-1]"X "N*
powtórz „X”, aby dać ciąg znaków N * 2>
weź podłańcuch zaczynając od indeksu pętli ...N<
... kończące N znaki późniejn
umieszczają nowy wiersz na końcu każdego łańcuchaźródło
Perl,
4140Perl 5.10 lub nowszy, uruchom z
perl -nE 'code'
(n
liczony jako rozmiar kodu)Przykładowe dane wyjściowe:
źródło
x
jest operatorem powtarzania łańcucha.'a' x 3
daje'aaa'
.Python, 48 znaków
źródło
Python, 76 znaków
źródło
Scala -
14195 znakówZastosowanie:
scala filename N
gdzie n jest Twoim wkładem do programu.źródło
APL (16)
Zakładając
⎕IO=0
(tj. Tablice o indeksie zero, jest to ustawienie)Wyjaśnienie:
⍳2⍴⎕
: odczytaj liczbę N i utwórz macierz N × N zawierającą (0,0) do (N-1, N-1).2⊤¨
: pobierz najmniej znaczący bit każdej liczby w macierzy. (Więc teraz mamy (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: dla każdej pary sprawdź, czy dwie liczby są równe. (Teraz mamy 1 0 1 0 1 0 ...)' X'[
...]
: wstaw spację dla każdego 0 i X dla każdego 1.źródło
Rubinowy
4542Demo: http://ideone.com/Mw25e
źródło
(x=gets.to_i).times
oszczędza trzy znaki. Skąd tak nagłe zainteresowanie tym staruszkiem?Pyton
48 znakówEDYCJA: Trochę źle ... Na końcu jest dodatkowe miejsce ... ale to nie jest widoczne. Jeśli zmienisz spację na „O” (lub dowolny inny spacji), zmień
[i%2:n]
na[i%2:n+i%2]
. dla poprawnej wersji.źródło
C ++ - 253 zaciemnionych znaków
źródło
JavaScript, 169
źródło
+'1'
zamiastparseInt('1')
. Nie podam ci liczby całkowitej, ale nie sądzę, że ważna jest tutaj liczba całkowita, prawda?k (26 znaków)
26 W przypadku funkcji gołej:
Lub kolejne 7, aby pobrać dane wejściowe ze standardowego wejścia
źródło
Bash: 60 znaków
Rozmiar tabeli jest przekazywany na przykład jako parametr wiersza polecenia
bash chesstable.sh 8
.źródło
Java 10, funkcja lambda,
928784 bajtówWypróbuj online tutaj .
Dzięki pułapowi do gry w golfa 4 bajty i Kevina Cruijssena na w golfa jeszcze 3.
Wersja bez golfa:
Java 8, pełny program,
155139 bajtówWypróbuj online tutaj .
Wersja bez golfa:
źródło
s+=
jest o 2 bajty krótsze niż w nawiasie:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
. Wypróbuj online."X ".charAt(i%n+i/n&1)
zamiast((i%n+i/n)%2<1?"X":" ")
Japt,
87 bajtówUruchom to online
76 bajtów , jeśli możemy zastąpićX
zx
:Uruchom to online
Alternatywne rozwiązanie 8-bajtowe :
Uruchom to online
źródło
APL (Dyalog Extended) , 12 bajtów SBCS
Anonimowa ukryta funkcja prefiksu. Wymaga
⎕IO←0
(indeksowanie od zera).Wypróbuj online!
⍳
d ndices 0… n – 1+⍀
plus stół z tym poziomo i pionowo:⍳
d ndices 0… n – 12|
pozostała część podziału po podzieleniu przez dwa'X '⊇⍨
użyj tej macierzy, aby zindeksować ciągźródło
Scala, 68 bajtów
lub
Wypróbuj online!
źródło
Brainfuck, 140 bajtów
źródło
JavaScript, 67 bajtów
Wypróbuj online
C, 83 bajty
Wypróbuj online
Podstawowy C64, 89 bajtów
źródło
on...go to
polecenia warunkowo, tak jakON-(I+JAND1)GOTO3:?"X";:
tam, gdzie wynosi zero, przejdzie ono do następującej instrukcji, w tym przypadku, jeśli(I + J AND 1) === 0
następnie wydrukuje X. Pozwala to na spakowanie większej liczby instrukcji w wierszu i oszczędzanie bajtów.Scala, 40 i 54
Liczba znaków wynosi 40 dla funkcji, 54 dla kompletnego programu.
Rozwiązaniem dającym tylko ciało funkcyjne jest:
("X "*n)sliding n take n foreach println
Wypróbuj online
Rozwiązaniem zapewniającym pełny program jest:
val n=readInt;("X "*n)sliding n take n foreach println
Możesz uruchomić go za pomocą następującego wiersza poleceń.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
gdzie 8 jest wejściem.
źródło
("X "*n)sliding n take n map println
Python - 127 znaków
źródło
C -
9286źródło
P, 33
źródło
{(x;x-1-x mod 2)#"X "}
przez 22 ... ach nie, ma ten sam błąd co twój - nie ma 4 X w nieparzystych wierszach dla wejścia 8.Ruby 58
źródło
PHP - 136 znaków (bez białych znaków)
Umożliwia wprowadzanie funkcji xiy.
Obsługuje teraz również nieparzyste dane wejściowe.
Jeśli stylizujesz wyjście tak, aby miało wysokość linii 0,65 em i zmieniłeś to ▒█ i █░ na □ ■ i ■ □, to wygląda jak prawdziwa (kwadratowa) szachownica.
Kod:
Wynik:
źródło
PHP, 87
źródło
CJam, 18 bajtów
Prawdopodobnie mogłem właśnie przenieść odpowiedź GolfScript, ale tutaj jest inne podejście. (A CJam i tak nie kwalifikuje się do wygrania.)
Sprawdź to tutaj.
Pomysł jest iteracyjne nad siatkę 2D z X i Y indeksów na stosie, stosując ten
f{f{...}}
trik . Biorąc pod uwagę xiy, możemy po prostu określić czarno-biały jako(x+y)%2
i użyć go do wybrania między znakiemX
a ciągiem zawierającym spację.źródło
J, 21 znaków
J też zaginął.
Poprzednie, 22 znaki:
Kody znaków ze wzoru mod2
row #
+column #
:źródło
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Wypróbuj online!VB.net, 161
źródło
PHP, 75 bajtów
źródło