Drukuj „N NE E SE S SW W NW”

47

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.

Jonasz
źródło
9
Być może pozwolenie na wyświetlanie ich w dowolnej kolejności byłoby nieco bardziej interesujące
Jo King
3
@JoKing Jasne, usunę to. Szczerze mówiąc, nie spodziewałem się, że ktoś przedstawi odpowiedzi, które wykorzystają pełną wartość dosłowną - nie jest to zgodne z duchem pytania. Jak twierdzę, wyszło, ponieważ nie byłem w stanie pokonać literału w J, mimo że struna ma pewną regularność i strukturę. Chodzi o to, aby wykorzystać tę prawidłowość, aby pokonać dosłowną odpowiedź. Źle na mnie, że nie jestem bardziej wyraźny. Pozwalając im na każde zamówienie, również to pokonuje, więc nie chcę tej zmiany.
Jonah
3
@UnrelatedString najbardziej obiecujący pomysł jakie miałem jest, aby pamiętać, że kierunki odpowiadają i wyniesiony do władzy 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ł.
Jonah
1
Ach, sprytnie! Zastanawiam się, czy mapowanie może działać lepiej dla liczb całkowitych Gaussa, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-iwię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ł.
Niepowiązany ciąg
3
Wydaje się, że wpisy powinny pokazywać naiwną wersję „echo tego ciągu” w swoim języku do porównania, a ocenianie powinno być wykonane na% skróconym?
Dewi Morgan

Odpowiedzi:

18

Płótno , 12 bajtów

>X½+T)AuS{⁹‟

Wypróbuj tutaj!

Ciąg, po prostu skompresowany.

dzaima
źródło
2
Czy możesz wyjaśnić, jak to działa bardziej szczegółowo?
Dillanm
2
@Dillanm nie ma nic więcej do powiedzenia - Canvas ma wbudowany kompresor (powinien być dostępny za pomocą ctrl + o → kompresja łańcuchowa), który tutaj po prostu przechowuje potrzebne znaki ( "NESW "), a następnie w bazie 5 przechowuje indywidualną postacie.
dzaima
56

bash (24 bajty)

za pomocą rozszerzenia nawiasu klamrowego

echo N {N,,S}E S {S,,N}W

ma taką samą długość jak kodowanie na stałe

echo N NE E SE S SW W NW

staje się jednak bardziej interesujący, gdy wypuszcza więcej punktów kompasu

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

rozszerzenie nawiasu klamrowego

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

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

echo {N,,S}{W,,E}
Nahuel Fouilleul
źródło
1
To ciekawe, nie wiedziałem, że możesz mieć pustą pozycję, to nawias klamrowy!
flawr
1
@flawr Przydatne przy chrootowaniu:mount -t proc{,,}
gronostaj
7
Lubcp file{,.bak}
Oliphaunt
43

Mornington Crescent , 4395 3823 bajtów

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

Wypró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, Wna 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 skonstruuj   ze ś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:

  1. dostać się do Seven Sisters (przez stację Victoria)
  2. i wrócić do Mornington Crescent (przez Bank).

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.

Dyskretna jaszczurka
źródło
Dwa pomysły na grę w golfa: 1. weź „NE”, „SW”, „NW”, „SE” z jednej stacji (używając np. NeAsden, Iss SwCottage, Acton To wni Mansion Hou se) 2. Spróbuj wykorzystać fakt, że Paddington ułatwia konkatenację `W 'zamiast W . To wymaga nieco więcej kosztów, aby „odświeżyć” Paddingtona, więc może nic nie zyskać.
Dyskretna jaszczurka
4
Czy używa to reguł pętli Dollis Hill? Jeśli tak, to myślę, że można to poprawić za pomocą paraboli Argyle Street, a może nawet nieco zmodyfikowanej wersji protokołu Webb-Ellis.
Richard Ward
26

PHP , 19 bajtów

N NE E SE S SW W NW

Wypróbuj online!

Usunięcie tego z drogi. W końcu ktoś to zrobi.

640 KB
źródło
8
Działa również dla HTML + JS.
Cœur
Polyglot z ///.
ktoś
24

pieprzenie mózgu , 142 139 131 119 bajtów

++++++++++[>+++>+++++++>++++++++>+++++++++<<<<-]>>>--.<<++.>>.<-.<.>.<.>>+++++.<.<.>>.<<.>>.>---.<<<.>>>.<<<.>>-----.>.

Wypró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!”.

ElPedro
źródło
7
Lol Nigdy nie zrozumiałem, w jaki sposób każdy może „grać w golfa” w tych mało znanych językach. Wystarczająco trudno jest zrozumieć, co robi kod (mówi się, że pochodzi on z języka C ++ / Java)
mackycheese21
10
@ mackycheese21 co? C ++ nie nauczył cię kochać manipulacji wskaźnikami?
candied_orange
12
pieprzenie mózgu może być ezoteryczne, ale na pewno nie nazwałbym tego niezrozumiałym
Niepowiązany ciąg
3
@candied_orange C ++ nauczył mnie nienawidzić manipulacji wskaźnikami i uciekać za każdym razem, gdy ktoś wspomniał o std :: :)
mackycheese21
1
@UnrelatedString niejasne, nie. Tak, tępy.
Rich
14

Brain-Flak , 204 bajty

((((((((((((((((()()()){}()){}){}())){}{}))<([([][]){}()]{})(([][]){}[])>)<([][]
()())>)[[]]()())<([]()()())>)<((([]())[][]){}[][()])>)<([][()()])>[[]()])<([][((
)()){}])>)((()()())){}{})<((()()()()()){})>)

Wypróbuj online!

DJMcMayhem
źródło
4
Punkty odjęte za opakowanie.
Rich
12

MarioLANG , 249 221 bajtów

+
+
+
+
+
+
+
+
+  ((+++++++++)))<
+>==============="
)++++++++)+++((-[!)--.)++.(.---------.).(.).)++.((.).).(.).++++.(.).(.(+++++++++.))
=================#================================================================.

Wypróbuj online!

Charlie
źródło
10

Deadfish ~ , 188 183 bajtów

-5 dzięki kałamarnicy

iiissdddc{ddddd}iiiicdddd{iiiii}c{d}ic{dddd}iiicddd{iiii}c{dddd}iiic{iiiii}ic{d}ddddc{dddd}iiic{iiiii}ic{ddddd}dci{iiiii}ciiiic{ddddd}dddddciiiii{iiiii}c{ddddd}dddddcdddd{iiiii}c{i}dc

Wypróbuj online!

kamienny pajęczak
źródło
1
{i}dcna koniec za 183
Przywróć Monikę
10

Formuła Excel, 59 57 bajtów

Jako formułę tablicową ( Ctrl+ Shift+ Enter) należy wprowadzić:

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

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:
Przed oceną formuły

Po:
Przed oceną formuły

Jak to działa

ADDRESSZwraca łańcuch znaków reprezentujący odwołanie w oparciu o dwa parametry, rowi col. 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ę ADDRESSi 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 ADDRESSto tylko numery kolumn odnoszące się do wymaganych punktów kompasu, np. Kolumna 14 to kolumna N, kolumna 369 to kolumna NE.

Jednak nie są wykończone tutaj ponieważ wszystkie zwrócone referencje mają wiersz zawiera, na przykład N1, NE1. Dlatego po prostu używamy SUBSTITUTEdo usunięcia 1wszystkich odniesień.

i_saw_drones
źródło
1
Byłby =IF(1,"N NE E SE S SW W NW")ważny?
Przywróć Monikę
3
@squid Tak, to rzeczywiście! Jednak szukałem alternatywy, która nie wymagałaby ciągów cytowanych dosłownie.
i_saw_drones
Jak to działa?
anatolyg
@anatolyg Dodałem sekcję wyjaśniającą, mam nadzieję, że jest zrozumiała.
i_saw_drones
9

Trójkątność , 71 bajtów

..... .....
...."W"....
..."W N"...
.." SW "+..
." SE S"++.
"N NE E"+  

Wypróbuj online!

W ostatnim wierszu znajdują się dwa spacje, aby trafić liczbę bajtów Wymagana trójkątność.

Przywróć Monikę
źródło
7

Węgiel drzewny , 14 bajtów

”{⊟“�_Zn↖⦄RüΦ≦

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:

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

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 SNWEsą 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ów 4,0,6,2.

Neil
źródło
7

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.

Helena
źródło
1
OK, to fajna odpowiedź. Zgadnij, że mnie pobiłeś. +1 za -1 :-)
ElPedro
1
BTW, zapomniałem powiedzieć, witamy na stronie Code Golf. Nie mogę się doczekać konkurowania z tobą w przyszłości ☺
ElPedro
1
Witamy! Rozważ dodanie wyjaśnienia lub łącza do tłumacza online dla programu. Zobacz inne odpowiedzi na przykłady. Krótkie odpowiedzi zawierające tylko kod zwykle są automatycznie oznaczane jako niskiej jakości.
mbomb007
1
Dzięki, mogę dodać wyjaśnienie mojego kodu. Spróbuję również zrozumieć, jak działają łącza internetowe.
Helena
1
@Helena W przypadku linku możesz sprawdzić link „Wypróbuj online” w mojej odpowiedzi. Jeśli wkleisz kod i uruchomisz go, możesz kliknąć ikonę linku i uzyskać doskonale sformatowaną odpowiedź golfową, którą możesz po prostu skopiować i wkleić tutaj. Działa jak magia i obsługuje wiele języków. Warto spróbować.
ElPedro
6

Python 2 , 62 61 58 53 bajtów

i=8
while i:print'NESESWNW'[~i+(i==4):][:1+i%2],;i-=1

Wypróbuj online!

Nie wspaniale, ale przynajmniej nie zwykły druk.

TFeld
źródło
5

Galaretka ,  16  15 bajtów

“¤œỵpq⁵’ṃ“NESW 

Peł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ỵÑ’ṃ“¡⁴ṁ».

Jonathan Allan
źródło
5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20 itd.) 28 Użyto tokenizowanych bajtów BASIC

 0 PRINT"N NE E SE S SW W NW

W Commodore BASIC nie wymaga się zamykającego cudzysłowu PRINTani LETinstrukcji, 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 (+ RETURNdo wykonania)

?"N NE E SE S SW W NW

Nie jestem pewien, jak policzyć liczbę bajtów użytych w tym przypadku zgodnie z interpretatorem ?i PRINTużyć tej samej liczby bajtów, a w pamięci nie ma żadnego programu.

Shaun Bebbers
źródło
1
PRINTmożna go również zastąpić ?, oszczędzając cztery bajty.
James
1
Nie, to nie prawda; PRINTi ?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.
Shaun Bebbers
1
Po tylu latach wciąż uczę się nowych rzeczy o Commodore. Dzięki Shaun! c64-wiki.com/wiki/BASIC_token
James
Oto jeden, który zrobiłem wcześniej (dla C64) -> pastebin.com/NMYzTC7k
Shaun Bebbers
4

Japt , 16 bajtów

Zwraca tablicę małych ciągów znaków. Skompresowany ciąg miał 18 bajtów, ale azamiast niego był używany jako separator, a następnie podział na to działał krócej.

`nÂà!Z°°nw`qa 

Spróbuj - stopka formatuje dane wyjściowe.

Kudłaty
źródło
4

Deadfish ~ , 138 bajtów

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

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!):

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}
anatolig
źródło
1
155
Przywróć Monikę
4

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 NWi nic więcej, ani że nie można było wyjść z powodu błędu po wykonaniu tej czynności, dlatego ten kod tylko zgłasza błąd, ale z tego powodu nie wychodzi.

N NE E SE S SW W NW

Wynik

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

Plik wsadowy, 25 bajtów

Wyprowadzaj tylko N NE E SE S SW W NWbez błędów lub awarii.

@echo N NE E SE S SW W NW
BDM
źródło
Możesz zapisać bajt, zastępując płytę CD tylko cytatami, na przykład 'N NE E SE S SW W NW'- otrzymasz coś takiego: N NE E SE S SW W NW - command not found
Dewi Morgan
4

Python2, 59 bajtów

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

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):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))
W zasadzie niegroźny
źródło
Po co upraszczać ir, skoro można to skomplikować? :-)
GB
4

K (ngn / k) , 23 22 bajtów

-1 bajt dzięki ngn!

"WNES"@5\7108085518230

Wypróbuj online!

J , 34 30 bajtów

echo(#:3510)<;.1'NNEESESSWWNW'

Wypróbuj online!

Galen Iwanow
źródło
Galen, dla J powtórzenie dosłowności byłoby krótsze. Bardzo chciałbym zobaczyć ten rytm ... Nie udało mi się tego
Jonah
1
Tak, echo powinno wynosić 4 + 19 bajtów. Nie mam lepszych pomysłów.
Galen Iwanow
1
dla k: jeśli zamienimy " "<-> "W"( 0<-> 4w 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
ngn
@ngn Dziękujemy!
Galen Iwanow
1
@GalenIvanov dobry również dla baz danych o najwyższej wydajności :) Arthur zaprojektował k jako język podstawowy dla kdb +
ngn
3

05AB1E , 14 bajtów

.•2Àβ‡yÞJŒ¾oÒ8

Wypróbuj online!

Spowoduje to wydrukowanie ciągu oprócz małych liter.

MilkyWay90
źródło
Wystarczy usunąć finał dla -1
Grimmy
3

Brachylog , 19 bajtów

"NNEESESSWWNW"ḍ₄ḍᵐc

Wypróbuj online!

Dane wyjściowe jako lista. ḍ₄ḍᵐcoszczędza dwa bajty na napisaniu siedmiu spacji i uczynieniu całego predykatu dosłownym ciągiem, więc przynajmniej wiąże PHP ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

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.

Niepowiązany ciąg
źródło
3

Biała spacja , 151 bajtów

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

Litery S(spacja), T(tab) i N(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:

  1. Wciśnij na stos wartości Unicode minus stała 84 dla znaków „WN W WS S ES E EN N” (zwróć uwagę, że ciąg jest wypychany do tyłu). Ponadto używam kilku kopii wcześniej przekazanych wartości, aby w miarę możliwości zapisywać bajty.
  2. Następnie uruchom nieskończoną pętlę, która wykonuje następujące czynności:
    1. Dodaj stałą 84 do bieżącej wartości Unicode
    2. Wydrukuj go jako znak do STDOUT

Stała 84jest generowana przez ten program Java, który napisałem dla innego wyzwania, na które odpowiedziałem w Whitespace .

Kevin Cruijssen
źródło
3

MathGolf , 20 17 bajtów

ÿnesw▒∙╫m+mÉîÄ╪^─

-3 bajty dzięki @maxb .

Wypróbuj online.

Wyjaśnienie:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)
Kevin Cruijssen
źródło
1
17 bajtów . To było zabawne wyzwanie. Próbowałem już wcześniej, ale skończyło się tak, jak ty. Myślę, że najwięcej możesz z tego zrobić o 1 bajt więcej, ale nie mogłem znaleźć krótszej drogi.
maxb
@maxb Ah ładne podejście. Muszę przyznać, że te kody bloku X ( Éi Äw tym przypadku) wciąż mnie trochę mylą. Czasami nie jestem pewien, kiedy to robię, czy nie muszę używać tych bloków kodu. Na m+przykład nie używasz żadnego. Ale twój Äto blok kodu o rozmiarze 1. Próbowałem mÅî╪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ę.
Kevin Cruijssen
1
Ładne wyjaśnienie! Próbowałem zrobić rozwiązanie bez konwertowania go na listę znaków, ale polecenie zip było nieco nieporadne. W przypadku bloków kodu należy traktować je jako zamienniki używane zamiast {}. mÅî╪tworzy mapowanie, ale nie ma w nim pętli for. Jeśli piszesz m{î{╪}}, 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órego m+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.
maxb
1
@maxb Rzeczywiście wiedziałem, że bloki kodu były krótszym wariantem {...}, ale trochę zapomniałem, że integer{jest to pętla for. :) Teraz îÄ╪ma to o wiele więcej sensu. Dziękuję za wyjaśnienie!
Kevin Cruijssen
2

CSS , 42 39 bajtów

(dzięki kamiennemu pajęczakowi dla poprawionej wersji)

body:after{content:"N NE E SE S SW W NW"

roberrrt-s
źródło
1
-3 bajty:body:after{content:"N NE E SE S SW W NW"
kamienny pajęczak
Och, zapomniałem, to również ważne, zaktualizowane :)!
roberrrt-s
2

Ziarno , 6014 bajtów

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

Generuje następujący program befunge:

"WN W WS S ES E EN N">:#,_@
Krzysztof Szewczyk
źródło
2

Hodor , 177 bajtów

hodor.hod("HoOodoOorhodor  HoOodoOorhodor HooodorrHodor  HooodorrHodor  HODOR?!? HooodorrHodor  HODOR?!?  HODOR?!? Hooodorrhodor  Hooodorrhodor  HoOodoOorhodor Hooodorrhodor ");

Wypróbuj online!

Steve
źródło
2

Zestaw (x86, Linux), 68 bajtów

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

Źródło:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

Kod pochodzi głównie z Shortest ELF dla „Hello world \ n”?

Steve
źródło