Prowadź alfabet
Biorąc pod uwagę tablicę kierunków, gdzie kierunki są zdefiniowane w następujący sposób:
NW N NE
W . E
SW S SE
Lub jako indeksy (możesz użyć tych indeksów do wskazówek zamiast ciągów powyżej):
0 1 2
3 . 4
5 6 7
Możesz wybrać dowolny format, obsługa obu nie jest wymagana przez wyzwanie. Wygeneruj odpowiedni ciąg alfabetu, który reprezentuje narysowaną ścieżkę, zaczynając od A. Liczba kierunków nigdy nie przekroczy 25, co oznacza, że nigdy nie może przejść Z
, więc nie musisz radzić sobie z tym scenariuszem. Żadne inne formaty wejściowe nie będą akceptowane, chyba że wyjaśnisz, dlaczego te formaty nie działają z powodu ograniczeń językowych. Łatwiej to wytłumaczyć na podstawie wypracowanego przykładu.
Spójrzmy więc na szybki przykład:
[E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1]
Zawsze zaczynaj od A.
A
Idź na wschód do B.
A-B
Idź na południowy wschód do C.
A-B
\
C
Idź na północ do D.
A-B D
\|
C
Wróć na południe do E, zastępując C.
A-B D
\|
E
Kontynuuj na południe przez 2 cykle do F i G.
A-B D
\|
E
|
F
|
G
Idź na północny zachód do H.
A-B D
\|
E
|
H F
\|
G
Idź na zachód do I.
A-B D
\|
E
|
I-H F
\|
G
Koniec na północ w punkcie J.
A-B D
\|
J E
| |
I-H F
\|
G
Ostateczną wartością, którą zwrócisz, jest odczytanie końcowego wykresu od lewej do prawej, od góry do dołu:
ABD
JE
IHF
G
Wynikające z:
ABDJEIHFG
To jest golf golfowy , wygrana o najniższej liczbie bajtów.
A
takiego,A
który nie będzie pierwszym wydrukowanym wynikiem?Odpowiedzi:
MATL ,
64585750464037363530 bajtówWypróbuj w MATL Online
Wyjaśnienie
źródło
JavaScript (ES6),
1081079487 bajtówOszczędność 13 bajtów dzięki Tytusowi!
Zaoszczędź jeszcze 7 bajtów, dzięki edc65!
Jak to działa
Formuła
(d += d > 3) * 9 - d % 3 * 8 - 28
przekłada wskazówki0..7
na następujące przesunięcia:Używamy tych przesunięć, aby przenieść wskaźnik
p
do jednowymiarowej tablicyr
i pisać litery w wynikowych pozycjach.Powtarzamy,
[i = 9, ...a]
a nie tylkoa
po to, aby wstawić literę początkową „a”. Bo zainicjowaći
aby9
w tym samym czasie, wprowadzamy specjalną offset 54 (w wyniku powyższej formułyd = 9
). Po pierwszej iteracji,p
równa646 + 54 = 700
, co pozostawia tylko tyle miejsca, aby obsługiwać do 25 ruchów do North-West:25 * -28 = -700
. Dlategop
jest inicjowany646
.Następnie musimy tylko dołączyć do tablicy, aby uzyskać nasz ostatni ciąg. Niezdefiniowane wartości pomiędzy literami są po prostu ignorowane przez
join()
.źródło
d+=d>3,p+=d*9-d%3*8-28
oszczędza 11 bajtów.i
definicję tablicy, oszczędzając jeszcze 2 bajty)(++i).toString(36)
(wciąż nie próbując zrozumieć swojej matematyki, ale wydaje się, że działa)Oktawa,
145138131 131123105103908785 bajtówWypróbuj online
Dzięki Suever 2 bajty zapisane!
Poprzednia odpowiedź 103 bajtów:
Wypróbuj online!
Najpierw spróbuj 145 bajtów
Kilka wyjaśnień
źródło
image
pakietu, część twojego bajtu musi być ładowaniem pakietu obrazupkg load image
pkg load *
na początku. ideone.com może być lepszym wyborempkg install -auto image-1.0.0.tar.gz
aby mógł się automatycznie ładować. Zobacz instrukcjęMATLAB,
8785 bajtówzaoszczędził 2 bajty dzięki Luisowi Mendo
źródło
'%&''?AYZ['-64
niezła sztuczka ... właściwie 66 bajtów, jeśli przepisujesz oktawęPHP, 93 bajty
Działa na jednej macierzy, takiej jak odpowiedź Kodosa Johnsona .
Ale to ma o wiele więcej pomysłów, które sam opublikowałem.
pobiera liczby z argumentów wiersza poleceń. Uruchom z
-nr
.przesuwanie kursora
wstępne obliczenia:
gra w golfa:
scalenie przypisań niczego nie zapisuje, ale poprawia czytelność:
awaria
źródło
Python 2,
180 178176 bajtówźródło
PHP, 121 bajtów
Działa to w wierszu polecenia z
-r
flagą i przyjmuje jako argument tablicę char (ciąg) indeksów.źródło
""<$n=$argv[1][$i]
zamiast($n=$argv[1][$i])!=null
R, 160 bajtów
źródło