Wprowadzenie
Tak wygląda szachownica.
Widać, że a1
to ciemny kwadrat. Jednakże, b1
jest lekki kwadratowy .
Zadanie
Wyzwanie to, biorąc pod uwagę dark
, light
czy both
wyjście wszystkie ciemny , światło lub wszystkie kwadraty z separatorem (jak spacji lub nową linią). Kolejność wszystkich kwadratów nie ma znaczenia .
Przypadki testowe
Input: dark
Output: a1 a3 a5 a7 b2 b4 b6 b8
c1 c3 c5 c7 d2 d4 d6 d8
e1 e3 e5 e7 f2 f4 f6 f8
g1 g3 g5 g7 h2 h4 h6 h8
Input: light
Output: a2 a4 a6 a8 b1 b3 b5 b7
c2 c4 c6 c8 d1 d3 d5 d7
e2 e4 e6 e8 f1 f3 f5 f7
g2 g4 g6 g8 h1 h3 h5 h7
Input: both
Output: a1 a2 a3 a4 a5 a6 a7 a8
b1 b2 b3 b4 b5 b6 b7 b8
c1 c2 c3 c4 c5 c6 c7 c8
d1 d2 d3 d4 d5 d6 d7 d8
e1 e2 e3 e4 e5 e6 e7 e8
f1 f2 f3 f4 f5 f6 f7 f8
g1 g2 g3 g4 g5 g6 g7 g8
h1 h2 h3 h4 h5 h6 h7 h8
Uwaga: Upiększyłem wynik, ale nie jest to konieczne .
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
a2a4a6...
byłoby w porządku?[[a2,a4,a6,a8],[...]...]
light
,dark
iboth
muszą być wprowadzane jakoString
S lub mogą być reprezentowane przez dowolny typ danych?Odpowiedzi:
Pyth,
2221 bajtów-1 bajt @ Sp3000
Zgodnie z funkcją
%Chz3
,dark
skróty do 1,light
do 0 iboth
do 2. Jeśli weźmiemy parzystość sumy rzędów szachowego kwadratu (to znaczya1
->[97, 33]
->(97 + 33)%2
=0
, ciemne kwadraty idą do 0, a jasne do 1 To pozwala nam filtrować według nierówności.Wypróbuj tutaj .
źródło
fn%Chz3%sCMT2sM*<G8S8
Bash + GNU Utilities, 74
{a..h}{1..9}
jest rozszerzeniem nawiasów klamrowych, które wytwarza wszystkie współrzędne dla tablicy 8x8 plus dodatkową kolumnę9
. Jest to ważne, ponieważ powoduje, że długość wiersza jest nieparzysta, co pozwala na efekt szachownicy.Po
printf
prostu formatuje każdą współrzędną, po jednej w wierszu.Wbudowane wyrażenie sed usuwa następnie wszystkie
x9
współrzędne, a następnie drukuje parzyste, nieparzyste lub oba wiersze wejściowe, zgodnie z danymi wejściowymi skryptu.źródło
JavaScript (SpiderMonkey 30+),
90858382 bajtówZwraca ciąg kwadratów oddzielony przecinkami. Wersja kompatybilna dla 99 bajtów:
Działa poprzez wyliczenie wszystkich 64 kwadratowych nazw, a następnie parsowanie ich w bazie 19, aby sprawdzić, czy są one jasne, czy ciemne modulo 2.
źródło
JavaScript (ES6), 82
87 98Anonimowa funkcja zwracająca ciąg kwadratów oddzielony spacjami.
TEST
źródło
Partia, 192 bajty
źródło
Pyth,
4839 bajtówWypróbuj tutaj!
Nadal dłuższe niż inne rozwiązanie Pyth, ale nie sądzę, żebym mógł to pokonać moim algorytmem.
Wyjaśnienie
Najpierw generujemy listę wszystkich kwadratów na planszy i przypisujemy ją do
Y
. Następnie filtrujemy tę listę, aby pozostały tylko jasne kwadraty i przypisujemy tę listę doJ
. Następnie oceniamy dane wejściowe i drukujemy:Y
jeśli wejście byłoboth
J
jeśli wejście byłolight
Y-J
jeśli dane wejściowe byłydark
Ustalenie, czy kwadrat jest światłem, działa w następujący sposób:
18
dlaa8
itd.x%2 == y%2
)źródło
Python 2,
737170 bajtówNadal jestem trochę zdezorientowany, czy funkcje są w porządku dla pytania, ponieważ wyzwanie wspomina o „separatorze”, ale ponieważ jest wiele innych zgłoszeń funkcji, zrobiłem to samo.
Podobne do odpowiedzi Erwana, ale z
dużowiększą ilością Python 2-ness.(-2 bajty dzięki @xnor)
źródło
s=="dark"
is[0]=="d"
ale dla mojej obronie w moim naprawdę spróbuj najpierw użyłems,*_=s
i 4cmp
ord(s[_])&_
lubord(s[_])/_
.%
:) Dzięki!PHP,
132126120108106 bajtówPętla przechodzi przez kolumny (0-7) i wiersze (1-8) i sprawdza, czy suma obu jest nieparzysta / parzysta.
Testowany z PHP 5.6.4, uruchom go:
php -d error_reporting=30709 -r '<CODE>' {dark|light|both}
źródło
$s==2
z$s-1
. Jeśli $ s = 2, a -1, to 1, co jest zgodne z prawdą i będzie kontynuowane$c=0
może być$c
, to będzie dać kilka ogłoszeń, ale przynajmniej w ciemności to działa dobrze$s-1
nie działa, ale powinno. Dzięki za świetny pomysł! Debuguję to później.$c
zmiennej? Brzmi to trochę dziwnie i nieważnie. Albo nie?Vitsy ,
9082 bajtówObjaśnienie pierwszego wiersza:
Objaśnienie drugiej linii:
Będą premiery nowych linii dla „ciemnych” i „obu”. Wymaga wprowadzenia tylko „ciemności”, „obu” lub „jasności”.
Wypróbuj online!
źródło
PowerShell v3 +,
142129 bajtówPobiera dane wejściowe
$a
i ustawia dwie zmienne, jeśli mamy wyprowadzać kwadraty$d
Arka lub$l
Ight na podstawie pierwszej litery wejścia.Następnie zapętlamy się
a-h
i1-8
używamy tej samej sztuczki, co w przypadku Określ kolor kwadratu szachowego, aby przeanalizować, czy jest to jasny czy ciemny kwadrat (ustawienie zmiennej pomocniczej$q
w pierwszym teście) i w razie potrzeby dodaj ten kwadrat do potoku. Po wykonaniu elementy w potoku są wyprowadzane po jednym w wierszu.Wymaga od
-in
operatora wersji 3 lub nowszej .Edytuj - Zapisano 13 bajtów, eliminując
switch
i zmieniając kolejność testowania równościźródło
Jolf, 48 bajtów
To dla mnie wszystko greckie ¯ \ _ (ツ) _ / ¯ To jest przełożenie doskonałej odpowiedzi edc65.
źródło
Perl, 69 + 3 = 72 bajty
Do uruchomienia
perl -p
, do którego dodałem 3 bajty.Wersja mniej golfowa (nieco inna, ponieważ operator babycart utrudnia ładne formatowanie):
Gra w golfa wykorzystuje
"@{[]}"
; skomentowana wersja używa,@a=...; "@"
więc skomentowany kod jest nadal uruchamialny.źródło
map$l.$_,1..8
-1grep$i=!$i||$b,map
ponownie -1C ++, 132 bajty
Pobiera dane z wiersza polecenia. Używa wskaźnika / modulo voodoo dla warunków drukowania.
źródło
n
pętla była konieczna. Myślę, że zagnieżdżone dla pętlii
ij
odciąłoby kilka bajtów.(i+j)%2
Podejście jest naprawdę mądry. Nie myślałem o tym.(i//8+i%8)%2
to samo,(i//8+i)%2
więc możesz wygrać trochę bajtów, jeśli usuniesz definicjęj=n%8
Java, 143
Hej, to nie jest najdłuższa odpowiedź :)
Dane wejściowe są traktowane jako argument wiersza poleceń.
źródło
PHP,
998279767473 bajtyWykorzystuje kodowanie ISO 8859-1.
Działaj w ten sposób (
-d
dodano tylko dla estetyki):Działa to tak: zmienna
$x
jest zwiększana od 1 do 71, liczby odpowiadają komórkom, jak pokazano poniżej.Dlatego
$x modulo 9
zwraca numer kolumny i numer$x / 9
wiersza, który przekonwertowałem na literę za pomocąchr
. Kod$z<c|$z>k^$x&1
zwraca wartośćtrue
dla inputboth
($z<c
) oraz w przypadkulight
lubdark
tylko dla komórek parzystych lub nieparzystych ($z>k ^ $x&1
). Wynik tego wyrażenia określa, czy współrzędne komórki zostaną wydrukowane. Wreszcie, jeśli$x modulo 9
wyniki0
, pomijam tę nieistniejącą komórkę.1817 bajtów (naprawiono błąd), mając tylko 1 pętlę, przekształcając liczbę na znak zamiast odwrotniexor
.125
wyrażenia,$x/9+69.9
aby uzyskać prawidłowy numer wiersza przed konwersją na znak~ß
do uzyskania spacjiźródło
JavaScript ES6,
187160159 bajtówPrawdopodobnie brakuje mi czegoś boleśnie oczywistego.No cóż. Pomaga nie spłaszczać tablicy.Zwraca tablicę 2D.
Wypróbuj tutaj:
Pokaż fragment kodu
źródło
Ruby, 85
Myślę, że są na to krótsze sposoby, ale jest to uroczy użytek
.upto
.źródło
R
129 129bajtówWiedziałem, że mogę wygenerować tablicę lepiej :). Zasadniczo tworzy to odwróconą tablicę, odfiltrowując odniesienia do siatki, w których cień nie pasuje do danych wejściowych. Dane wyjściowe są oddzielone spacją.
Nie golfił
Test
źródło
Oracle SQL 11.2,
192180 bajtówNie grał w golfa
Widok v generuje współrzędne każdego kwadratu. Jeśli suma współrzędnych jest równa, to kwadrat jest czarny, w przeciwnym razie jest biały.
źródło
Rdza,
263259244 bajtówRozszerzona forma:
źródło
MATL , 31 bajtów
Wypróbuj online!
źródło
CJam, 29
Szybkie i brudne rozwiązanie: p
Wypróbuj online
Wyjaśnienie:
źródło
Haskell,
1331161051009891 bajtówTo moja pierwsza próba gry w golfa w Haskell.
Z pomocą Michaela Kleina udało nam się uzyskać mniej niż 100 znaków!
źródło
c>0
zac==1
ic<1
zac==0
? Zapisuje dwa bajty.f r=[[[a,b]|a<-['a'..'h'],b<-['1'..'8']]!!i|i<-[0..63],even i||r<"l",odd i||r!!0/='d']
i
nie dają nam ukośnych pasków. Niektórzy rozwiązują to za pomocąi+i`div`8
(jakx+y
). Inne zaczynają się od,['1'..'9']
a[0..71]
następnie zachowują tylkoi`mod`9<8
wyniki później, dla 96 bajtów. Jednak ta hybryda naszych dwóch podejść radzi sobie dobrze przy 91 bajtach:l=[0..7];f r=[["abcdefgh"!!x,"12345678"!!y]|x<-l,y<-l,odd(x+y)||r<"l",even(x+y)||r!!0/='d']
Matematyka 133 bajty
Metoda 1 : 108 bajtów. To konstruuje tablicę jako tabelę, z etykietami w każdej komórce, i zwraca jasne lub ciemne przekątne lub pasy zgodnie z wymaganiami.
Metoda 2 : 133 bajty. Tworzy tablicę i wybiera zgodnie z nieparzystym charakterem sumy numeru wiersza + numeru kolumny każdej komórki.
źródło
JS, 197 bajtów
źródło
Python (3.5),
1061009692 bajtyużyj sztuczki MegaTom,
(i+j)%2
aby wygrać 6 bajtówWypróbuj na repl.it
Wyniki
Poprzednia wersja
źródło
C ++, 119 bajtów
Na podstawie sztuczki MegaTom.
źródło
C (gcc) , 112 bajtów
Wypróbuj online!
Jeśli a == 1, kwadrat będzie zawsze czarny, jeśli „nieparzystość” wiersza i kolumny jest taka sama, tzn. Oba są nieparzyste lub oba są parzyste. Przeciwnie jest w przypadku białych kwadratów, w których rząd i kolumna zawsze będą się różnić nieparzystością.
Następnie wystarczy połączyć pętle wierszy i kolumn, a także zapoznać się z tabelą priorytetów operatorów, aż do osiągnięcia wystarczającego poziomu niezrozumiałości.
źródło