Leaper jest kategorią bajki szachy kawałek, który porusza się przez „skoków”. Normalny rycerz jest (1,2) leaper, co oznacza, że każdy ruch wymaga przesunięcia o 1 kwadrat w kierunku prostopadłym i 2 kwadraty w kierunku prostopadłym.
.o.o.
o...o
..N..
o...o
.o.o.
Istnieje wiele różnych leaperów. (1,3) -leaper nazywa się Długi Rycerz lub Wielbłąd. Jego wzór ruchu wygląda następująco:
..o.o..
.......
o.....o
...L...
o.....o
.......
..o.o..
Jest też (2,2) Alfil ...
o...o
.....
..A..
.....
o...o
... a nawet (0,1) Wazir.
.o.
oWo
.o.
Wyzwanie
Biorąc pod uwagę parę liczb jako dane wejściowe, wypisz odpowiedni schemat ruchu. Możesz napisać program lub funkcję, z danymi wejściowymi dostarczonymi przez STDIN / wiersz poleceń lub jako argument, a dane wyjściowe dostarczone przez STDOUT lub wartość zwracaną. To jest golf golfowy .
Wejście
Dane wejściowe będą oddzieloną przecinkami listą dwóch liczb całkowitych i dużej litery. Dwie liczby całkowite będą w zakresie 0-7
(włącznie) i nie malejącej kolejności. Końcowy znak nowej linii jest opcjonalny dla danych wejściowych i wyjściowych.
Oto dane wejściowe dla powyższych czterech przykładów:
1,2,N
1,3,L
2,2,A
0,1,W
Wynik
Wyjście będzie wielowierszowym ciągiem w kształcie kwadratu. Wielka litera zostanie umieszczona na środku, aby reprezentować bieżącą lokalizację utworu. Lokalizacje ruchu będą reprezentowane przez 4 lub 8 małych litero
. Wszystkie pozostałe miejsca na kwadracie zostaną wypełnione kropkami.
Jeśli wzór ruchu jest 0,0
, wypisz tylko wielką literę.
Jako wskazówka, jeśli druga liczba całkowita (większa) ma wartość N, to kwadrat zawsze będzie miał długość boku 2N + 1. o
S zawsze będzie na obwodzie placu.
Dodatkowe przypadki testowe
1,1,F
o.o
.F.
o.o
5,7,Q
..o.........o..
...............
o.............o
...............
...............
...............
...............
.......Q.......
...............
...............
...............
...............
o.............o
...............
..o.........o..
0,0,J
J
Odpowiedzi:
Ruby, 107
Niegolfowany w programie testowym
źródło
Pyth, 40 bajtów
Uczę się Pyth! Wypróbuj to .
Wyjaśnienie
źródło
JavaScript (ES6),
163161145 bajtówGdzie
\n
jest dosłownie nowy znak linii. Działa, generując prawy dolny kwadrant i odbijając go wzdłuż obu osi.Edycja: Zapisano 2 bajty dzięki @ edc65.
(Dostałem się tutaj przez zduplikowane pytanie, które pozwoliło na uzyskanie wyniku tablicy, który byłby o 19 bajtów krótszy, ale nie gwarantowało nie zmniejszania kolejności, co zmarnowało 8 bajtów.)
źródło
fill
i dosłownego nowego wiersza\n
jest dosłowny znak nowej linii”, kiedy to robię), ale dziękuję za drugą wskazówkę.JavaScript (ES6) 144
150Mniej golfa
Test
źródło