Chińska szachownica wygląda tak (na podstawie tego pytania , ale tym razem ma ustalony rozmiar):
G
. G
G G G
G G . G
B B B B . . Y G . Y . Y Y
B B B . . G . . . Y Y Y
B . B . . . . . Y . Y
B . . . . . . . . Y
. . . . . . . . .
. P . . . . . O O .
P P . . . . . . . O O
P P P . . . R . . O O .
P P P P . . R . . O O O O
R . R R
R R R
R .
R
Każdy znak spacji w tym przykładzie można zastąpić dowolnym znakiem ASCII drukowanym spacją, a spacje nigdy nie są zmieniane. Pamiętaj, że nie ma gwarancji, że jest to poprawne ustawienie w chińskim warcabie (na przykład może nie mieć dokładnie 7 różnych rodzajów znaków).
Twoim zadaniem jest obrócenie go o wielokrotność 60 stopni.
To jest powyższy przykład obrócony o 60 stopni w prawo:
B
B B
B B B
B . B B
P P P . . . B . . G G . G
P P P P . . . . . G G G
P P . . . . . G Y . G
P . . . . . . . G G
. . . . . . . . .
R . . . . . . . . Y
R . R R . . . . Y Y .
R R R . . . O . . . Y Y
R . R R . . . O . Y Y Y Y
O O O .
O O O
O .
O
Dane wejściowe to nieujemna liczba całkowita i chińska szachownica. Twój program (lub funkcja) powinien obrócić go o liczbę całkowitą * 60 stopni. Ty decydujesz, czy obracać w prawo, czy w lewo, o ile jest to spójne. Zarówno wejście, jak i wyjście nie powinny mieć dodatkowych spacji wiodących ani końcowych.
To jest golf golfowy. Najkrótszy kod wygrywa.
źródło
_,,Sf*\.+W%ze_
.liq{_N/eeSf.*W%:szsS-\{_' >{;(}&\}/;]}@*
, ale myślałem o obróceniu o 60 stopni, a nie o 45 stopni, kiedy pisałem to wyzwanie ...qN/(i{_eeSf.*W%:szSf-{},.{' f+sW<\,' e[}}*N*
jest nawet dłuższe niż to, co miałem wcześniej ...Python 2, 171 bajtów
To chyba jedyny raz, kiedy uważam się za
str.splitlines
przydatny - na wszystkie inne czasy.split("\n")
jest krótszy.Użyj jak
f(S,10)
.Wyjaśnienie
Dla każdego znaku wejściowego:
Aby dowiedzieć się, który znak ma zostać zastąpiony, konwertujemy siatkę na współrzędne sześcianu
(x, y, z)
, obracamyn
czasy przez przekształcanie(x, y, z) -> (-y, -z, -x)
, a następnie przeliczamy z powrotem.źródło