Wydaje się to prawie trywialne, ale ponieważ po pewnym wysiłku nie byłem w stanie pokonać dosłownego rozwiązania w J, pomyślałem, że może to stanowić przyzwoite wyzwanie (choć, rzecz jasna, nie jest to wyzwanie specyficzne dla J).
Tytuł mówi wszystko. Musisz po prostu napisać program lub funkcję (bez argumentów), która zwraca lub wypisuje:
N NE E SE S SW W NW
Możesz użyć znaku nowej linii zamiast spacji.
Funkcja bez argumentu zwracająca tablicę ciągów takich jak
['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']
jest również do przyjęcia.
Litery mogą być wielkie lub małe, ale nie mogą być mieszane.
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5
. Niestety kod J wymagany do mapowania tych wyników na litery okazał się droższy niż literał.1, 1+i, i, -1+i, -1, -1-i, -i, 1-i
więc masz jedną rzeczywistą lub urojoną część na główny kierunek zamiast dwóch. Prawdopodobnie trudniej jest je wygenerować, chyba że istnieje jakiś sposób na zaokrąglenie tych mocy i od 0? Nie wiem, czy byłoby to łatwe czy trudne w J, ale to pomysł.Odpowiedzi:
Płótno , 12 bajtów
Wypróbuj tutaj!
Ciąg, po prostu skompresowany.
źródło
"NESW "
), a następnie w bazie 5 przechowuje indywidualną postacie.bash (24 bajty)
za pomocą rozszerzenia nawiasu klamrowego
ma taką samą długość jak kodowanie na stałe
staje się jednak bardziej interesujący, gdy wypuszcza więcej punktów kompasu
rozszerzenie nawiasu klamrowego
w przeciwnym razie, jeśli można zmienić kolejność (17 bajtów), sztuczka polega na tym, że bez cudzysłowu parametr ciągu empy znika
źródło
mount -t proc{,,}
cp file{,.bak}
Mornington Crescent ,
43953823 bajtówWypróbuj online!
Ponieważ trochę więcej można się spodziewać, aby przeczytać to wszystko, pozwólcie, że przedstawię krótki przegląd mojego podejścia. Główną ideą jest, aby przechowywać 3 kopie bohaterów
N
,E
,S
,W
na różnych stacjach na linii okręgu, za pośrednictwem banku - Hammersmith. Te postacie są skonstruowane od początku nazwy stacji w Charing Cross. Następnie skonstruujze środka dobrze wybranej nazwy stacji, używając Mile End i Charing Cross, i przechowuj ją w banku, aby można ją było zebrać u Hammersmith w konkatenacji. Na koniec połącz znaki jeden po drugim w Paddington, kopiując je ponownie za pośrednictwem Bank - Hammersmith, jeśli będą musiały być ponownie wykorzystane później.
Myślę, że obecne rozwiązanie jest dość zbliżone do optymalnego z tą strategią, przynajmniej pod względem liczby odwiedzonych stacji: zaledwie 2 razy skorzystałem ze stacji tylko do tranzytu:
Wszystkie pozostałe wizyty na stacji były, o ile nie zapomniałem, przechowywaniem / odzyskiwaniem czegoś przydatnego lub (częściowym) używaniem zdolności stacji.
Jeśli chodzi o długości linii, próbowałem wybrać najkrótsze nazwy w Circle Line, ale może tam być niewielka poprawa. Możliwe jest, że przechowywanie czegoś w Dystrykcie może zmniejszyć liczbę bajtów.
źródło
Ne
Asden, IssSw
Cottage, Acton Town
i Mansion House
) 2. Spróbuj wykorzystać fakt, że Paddington ułatwia konkatenację `W 'zamiastW
. To wymaga nieco więcej kosztów, aby „odświeżyć” Paddingtona, więc może nic nie zyskać.PHP , 19 bajtów
Wypróbuj online!
Usunięcie tego z drogi. W końcu ktoś to zrobi.
źródło
pieprzenie mózgu ,
142139131119 bajtówWypróbuj online!
Wystarczy zapętlić 10 razy, aby wypełnić komórki 30, 70, 80 i 90, a następnie przejść do tyłu i do przodu i dopasować wartości komórek, aby wydrukować wymagane znaki. Niewiele różni się od standardowego „Hello world!”.
źródło
Brain-Flak , 204 bajty
Wypróbuj online!
źródło
MarioLANG ,
249221 bajtówWypróbuj online!
źródło
Deadfish ~ ,
188183 bajtów-5 dzięki kałamarnicy
Wypróbuj online!
źródło
{i}dc
na koniec za 183Formuła Excel,
5957 bajtówJako formułę tablicową ( Ctrl+ Shift+ Enter) należy wprowadzić:
Po wprowadzeniu formuły jako formuły tablicowej, podświetl ją na pasku formuły i oceń ją za pomocą, F9aby zwrócić wynik, na przykład:
Przed:
Po:
Jak to działa
ADDRESS
Zwraca łańcuch znaków reprezentujący odwołanie w oparciu o dwa parametry,row
icol
. Trzeci parametr kontroluje, jaki rodzaj zwracanego odniesienia, odniesienie bezwzględne lub względne. Na przykład=ADDRESS(1,2,4)
zwraca"B1"
.Możemy dostarczyć tablicę
ADDRESS
i użyć jej jako formuły tablicowej do zwrócenia wielu wyników, na przykład=ADDRESS(1,{1,2,3},4)
zwrotów"A1","B1","C1"
.Dlatego w mojej odpowiedzi podana tablica
ADDRESS
to tylko numery kolumn odnoszące się do wymaganych punktów kompasu, np. Kolumna 14 to kolumnaN
, kolumna 369 to kolumnaNE
.Jednak nie są wykończone tutaj ponieważ wszystkie zwrócone referencje mają wiersz zawiera, na przykład
N1
,NE1
. Dlatego po prostu używamySUBSTITUTE
do usunięcia1
wszystkich odniesień.źródło
=IF(1,"N NE E SE S SW W NW")
ważny?Trójkątność , 71 bajtów
Wypróbuj online!
W ostatnim wierszu znajdują się dwa spacje, aby trafić liczbę bajtów Wymagana trójkątność.
źródło
Węgiel drzewny , 14 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu ... który jest tylko ciągiem do wydrukowania, ponieważ auto-deverbosifier zajmuje się kompresją ciągu.
Drukowanie łańcucha bez kompresji zajmuje 19 bajtów, ponieważ Charcoal drukuje ASCII do wydruku dosłownie. Niestety najlepsza algorytmiczna odpowiedź, jaką mogłem wymyślić, zajmuje 20 bajtów:
Wypróbuj online! Dane wyjściowe w formacie tablicowym (połączenie dwóch elementów w spacje kosztowałoby dwa bajty). Działa, zauważając, że litery łańcucha
SNWE
są używane tylko wtedy, gdy bieżący indeks zewnętrzny jest równy lub oddalony o 1 (moduł 8) w dowolnym kierunku od odpowiedniego elementu listy indeksów4,0,6,2
.źródło
pieprzenie mózgu , 117 bajtów
Wypróbuj online!
Ten kod najpierw utworzy w pamięci znaki „EN SW”, a następnie będzie poruszał się w przód iw tył, aby je wydrukować. Spacja znajduje się na środku, ponieważ jest najczęściej drukowana. N i S oraz W i E nigdy nie pojawiają się razem, więc znajdują się po przeciwnych stronach pamięci. W celu optymalizacji niektóre ostateczne spadki mają miejsce podczas fazy wyjściowej.
źródło
Python 2 ,
62615853 bajtówWypróbuj online!
Nie wspaniale, ale przynajmniej nie zwykły druk.
źródło
Galaretka ,
1615 bajtówPełny program drukujący tekst
Wypróbuj online!
16 ...
Link niladyczny, który daje listę list (małych liter) znaków.
Wypróbuj online!
Alternatywą 15 jako niladic link, który daje listę (małymi literami) znaków (ze spacjami):
“¡XÇŀqỵÑ’ṃ“¡⁴ṁ»
.źródło
Commodore BASIC (TheC64Mini, C64, C128, VIC-20 itd.) 28 Użyto tokenizowanych bajtów BASIC
W Commodore BASIC nie wymaga się zamykającego cudzysłowu
PRINT
aniLET
instrukcji, ponieważ interpreter automatycznie go zamknie, co oszczędza jeden token BASIC.Alternatywnie można po prostu użyć trybu bezpośredniego w następujący sposób:
Commodore BASIC 23 znaków PETSCII (+
RETURN
do wykonania)Nie jestem pewien, jak policzyć liczbę bajtów użytych w tym przypadku zgodnie z interpretatorem
?
iPRINT
użyć tej samej liczby bajtów, a w pamięci nie ma żadnego programu.źródło
PRINT
można go również zastąpić?
, oszczędzając cztery bajty.PRINT
i?
użyj tej samej ilości tokenów BASIC. Nie liczę znaków PETSCII, ponieważ nie jest to zbyt reprezentatywne dla tego, ile miejsca w dostępnej pamięci jest używane przez tłumacza.Japt , 16 bajtów
Zwraca tablicę małych ciągów znaków. Skompresowany ciąg miał 18 bajtów, ale
a
zamiast niego był używany jako separator, a następnie podział na to działał krócej.Spróbuj - stopka formatuje dane wyjściowe.
źródło
Deadfish ~ , 138 bajtów
Wypróbuj online!
Dlatego wypisywanie małych liter w znakach nowej linii jest lepsze niż domyślne (wielkie litery ze spacjami).
Ten kod został wygenerowany przez mój optymalizator napisany w C ++ (dzięki kałamarnicy za kolejny pomysł optymalizacji!):
źródło
Plik wsadowy, 19 bajtów
W pytaniu nigdy nie stwierdzono, że trzeba było generować dane wyjściowe
N NE E SE S SW W NW
i nic więcej,ani że nie można było wyjść z powodu błędu po wykonaniutej czynności,dlategoten kod tylko zgłasza błąd, ale z tego powodu nie wychodzi.Wynik
Plik wsadowy, 25 bajtów
Wyprowadzaj tylko
N NE E SE S SW W NW
bez błędów lub awarii.źródło
'N NE E SE S SW W NW'
- otrzymasz coś takiego:N NE E SE S SW W NW - command not found
Python2, 59 bajtów
Magiczna liczba to połączone trzy-bitowe indeksy w ciąg znaków, w odwrotnej kolejności, abyśmy mogli rozpocząć iterację w LSB.
Spędziłem trochę czasu próbując zmniejszyć liczbę magiczną, ale powtarzanie ciągu znaków przez mnożenie, aby umożliwić dodatkowe indeksy, nie działa, ponieważ muszę kodować spację - najlepiej, że dostałem nakładające się indeksy w wyszukiwaniu, dodając więcej znaków do ciąg znaków niż cyfry usunięte z magicznej liczby (w tym kilka niefortunnych nie obchodzi mnie w środku):
źródło
K (ngn / k) ,
2322 bajtów-1 bajt dzięki ngn!
Wypróbuj online!
J ,
3430 bajtówWypróbuj online!
źródło
" "
<->"W"
(0
<->4
w bazie 5), spacja będzie na końcu i możemy ją usunąć, ponieważ indeksowanie ciągów poza zakresem daje spację i tak:"WNES"@5\7108085518230
05AB1E , 14 bajtów
Wypróbuj online!
Spowoduje to wydrukowanie ciągu oprócz małych liter.
źródło
•
dla -1Brachylog , 19 bajtów
Wypróbuj online!
Dane wyjściowe jako lista.
ḍ₄ḍᵐc
oszczędza dwa bajty na napisaniu siedmiu spacji i uczynieniu całego predykatu dosłownym ciągiem, więc przynajmniej wiąże PHP ...Starałem się być sprytny
3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc
, ale nie udało mi się uzyskać SE ani NW i jest to bajt dłużej.źródło
Biała spacja , 151 bajtów
Litery
S
(spacja),T
(tab) iN
(nowa linia) dodane tylko jako wyróżnienia.[..._some_action]
dodano tylko jako wyjaśnienie.Wypróbuj online (tylko z surowymi spacjami, tabulatorami i nowymi wierszami).
Wyjaśnienie:
Stała
84
jest generowana przez ten program Java, który napisałem dla innego wyzwania, na które odpowiedziałem w Whitespace .źródło
MathGolf ,
2017 bajtów-3 bajty dzięki @maxb .
Wypróbuj online.
Wyjaśnienie:
źródło
É
iÄ
w tym przypadku) wciąż mnie trochę mylą. Czasami nie jestem pewien, kiedy to robię, czy nie muszę używać tych bloków kodu. Nam+
przykład nie używasz żadnego. Ale twójÄ
to blok kodu o rozmiarze 1. PróbowałemmÅî╪
jeszcze zobaczyć, co się stało, dlatego teraz rozumiem, dlaczego istnieje blok kodu o rozmiarze 1Ä
na początek. :)) Jednak dzięki za -3 bajty. Widzę jeszcze wiele do nauczenia się.{}
.mÅî╪
tworzy mapowanie, ale nie ma w nim pętli for. Jeśli piszeszm{î{╪}}
, być może łatwiej jest zauważyć, że kod jest „mapowany do: pętli <index> razy i obraca ciąg znaków w każdej pętli”. Powodem, dla któregom+
go nie ma, jest to, że niektóre polecenia mają niejawne bloki 1-bajtowe (mapuj, filtruj, zmniejsz itp.), Aleî
nie są poleceniem przeznaczonym do użycia w połączeniu z blokiem.{...}
, ale trochę zapomniałem, żeinteger{
jest to pętla for. :) TerazîÄ╪
ma to o wiele więcej sensu. Dziękuję za wyjaśnienie!CSS ,
4239 bajtów(dzięki kamiennemu pajęczakowi dla poprawionej wersji)
źródło
body:after{content:"N NE E SE S SW W NW"
Ziarno , 6014 bajtów
Generuje następujący program befunge:
źródło
Hodor , 177 bajtów
Wypróbuj online!
źródło
Zestaw (x86, Linux), 68 bajtów
Źródło:
Kod pochodzi głównie z Shortest ELF dla „Hello world \ n”?
źródło
Galaretka , 16 bajtów
Wypróbuj online!
Ze stopką do wydrukowania oddzieloną spacją
Łącze niladyczne, które zwraca listę ciągów. 2 bajty krótsze (i prawdopodobnie bardziej interesujące) niż skompresowany ciąg w galaretce.
źródło
C # (interaktywny kompilator Visual C #) , 24 bajty
Wypróbuj online!
źródło