Распечатать «N NE E SE S SW W NW»


47

Это кажется почти тривиальным, но так как после некоторых усилий я не смог побить буквальное решение в J, я подумал, что это может стать достойным испытанием (хотя, чтобы быть ясным, это не специфичная для J задача).

Название говорит обо всем. Вам просто нужно написать программу или функцию (без аргументов), которая возвращает или печатает:

N NE E SE S SW W NW

Вы можете использовать переводы строк вместо пробелов.

Функция без аргументов, возвращающая массив строк, таких как

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

также приемлемо.

Буквы могут быть прописными или строчными, но не могут быть смешанными.


9
Возможно, позволить выводить их в любом порядке было бы немного интереснее
Джо Кинг,

3
@ Шучу Конечно, я это уберу. Честно говоря, я не ожидал, что кто-либо представит ответы, которые используют полную буквальную ценность - это не в духе вопроса. Как я утверждаю, это произошло потому, что я не смог побить литерал в J, несмотря на то, что строка имела регулярность и структуру. Все дело в том, чтобы использовать эту закономерность, чтобы побить буквальный ответ. Плохо для меня за то, что я не был более явным. Разрешение им любого заказа также побеждает это, поэтому я не хочу вносить это изменение.
Иона

3
@UnrelatedString Наиболее перспективная идея я имел это отметить , что направления соответствуют я поднял с полномочиями 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5. К сожалению, J-код, необходимый для отображения этих результатов в буквы, оказался дороже, чем литерал.
Иона

1
Ах, умный! Интересно, может ли отображение лучше работать для целых чисел Гаусса, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-iчтобы у вас была одна действительная или мнимая часть на кардинальное направление вместо двух. Это, вероятно , труднее произвести те , хотя, если нет какой - то способ , которым Вы могли бы округлить эти полномочия I от 0? Я не знаю, насколько легко или сложно это было бы в J, но это идея.
Несвязанная строка

3
Такое ощущение, что записи должны также показывать наивную версию "echo this string" на их языке для сравнения, и судить по сокращенному%?
Деви Морган

Ответы:


18

Холст , 12 байт

>X½+T)AuS{⁹‟

Попробуй это здесь!

Строка, просто сжатая.


2
Можете ли вы объяснить, как это работает немного подробнее?
Дилланм

2
@Dillanm сказать больше нечего - Canvas имеет встроенный компрессор (должен быть доступен с помощью ctrl + o → string compress), который здесь просто хранит необходимые символы ( "NESW "), а затем в base-5 хранит индивидуальное персонажи.
Дзайма

56

Баш (24 байта)

используя расширение скобки

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

такой же длины, как жесткое кодирование

echo N NE E SE S SW W NW

однако это становится более интересным при выводе большего количества точек компаса

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

расширение скобки

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

в противном случае, если порядок можно изменить (17 байт), хитрость заключается в том, что без кавычек пропускается параметр строки empy.

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

1
Это интересно, я не знал, что вы можете иметь пустую позицию, это выражение скобки!
Flawr

1
@flawr Полезно при chrooting:mount -t proc{,,}
gronostaj

7
Илиcp file{,.bak}
Олифонт

43

Морнингтон Полумесяц , 4395 3823 байта

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

Попробуйте онлайн!

Поскольку ожидать, что вы все это прочтете, немного, позвольте мне дать краткий обзор моего подхода. Основная идея состоит в том, чтобы хранить 3 копии персонажей N, E, S, Wна различных станциях на линии круга, через банк - Хаммерсмит. Эти символы созданы с начала названия станции в Чаринг-Кросс. Затем постройте   из середины хорошо выбранного названия станции, используя Mile End и Charing Cross, и сохраните его в банке, чтобы его можно было собрать в Hammersmith при объединении. Наконец, объедините персонажей одного за другим в Паддингтоне, скопировав их снова через Банк - Хаммерсмит, если их нужно будет использовать позже.


Я думаю, что текущее решение довольно близко к оптимальному с этой стратегией, по крайней мере, с точки зрения количества посещенных станций: только 2 раза я использовал станцию только для транзита:

  1. добраться до Семи Сестер (через станцию ​​Виктория)
  2. и вернуться в Морнингтон-Кресент (через Банк).

Все остальные посещения станций были, если я не забыл, либо сохранением / извлечением чего-либо полезного, либо (частью) использованием способности станций.

Что касается длин линий, я попытался выбрать самые короткие имена на Circle Line, но там может быть небольшое улучшение. Возможно, что хранение чего-либо в округе может сбрить несколько байтов.


Еще две идеи для игры в гольф: 1. Возьмите «NE», «SW», «NW», «SE» с одной станции (используя, например, Neasden, Swiss Cottage, Acton To wnи Mansion Hou se) 2. Попробуйте использовать Дело в том, что Паддингтон облегчает объединение "W", а не W . Для «обновления» Паддингтона требуются дополнительные затраты, поэтому он может ничего не получить.
Дискретная ящерица

4
Использует ли это правила цикла Dollis Hill? Если так, то я думаю, что это можно улучшить с помощью параболы на улице Аргайл и, возможно, даже слегка модифицированной версии протокола Уэбба-Эллиса.
Ричард Уорд


24

Brainfuck , 142 139 131 119 байт

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

Попробуйте онлайн!

Просто зациклите 10 раз, чтобы заполнить ячейки 30, 70, 80 и 90, затем переместитесь назад и вперед и отрегулируйте значения ячеек, чтобы вывести необходимые символы. Не сильно отличается от стандартного «Привет, мир!».


7
Lol Я никогда не понимал, как кто-то может «сыграть в гольф» на этих неясных языках Достаточно сложно понять, что делает код в первую очередь (об этом говорит C ++ / Java)
mackycheese21

10
@ mackycheese21 что? C ++ не научил вас любить манипуляции с указателями?
candied_orange

12
брейкфак может быть эзотерическим, но я уверен, что не назвал бы это неясным
несвязанная строка

3
@candied_orange C ++ научил меня ненавидеть манипуляции с указателями и убегать всякий раз, когда кто-то упоминал std :: :)
mackycheese21

1
@ UnrelatedString неясное, нет. Тупой, да.
Богатое




10

Формула Excel, 59 57 байт

Следующее должно быть введено как формула массива ( Ctrl+ Shift+ Enter):

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

После ввода формулы в виде формулы массива выделите ее в строке формул и оцените, используя, F9чтобы вернуть результат, например:

До:
До оценки формулы

После:
До оценки формулы

Как это устроено

ADDRESSФункция возвращает строку , представляющую ссылку на основе два параметров, rowи col. Третий параметр контролирует, какой тип ссылки возвращается, абсолютную или относительную ссылку. Например, =ADDRESS(1,2,4)возвращает "B1".

Мы можем предоставить массив ADDRESSи использовать его как формулу массива для возврата нескольких результатов, например, =ADDRESS(1,{1,2,3},4)возвратов "A1","B1","C1".

Поэтому, в моем ответе, массив, предоставленный - ADDRESSэто просто номера столбцов, относящиеся к требуемым точкам компаса, например, Столбец 14 является столбцом N, Столбец 369 является столбцом NE.

Тем не менее, мы еще не закончили здесь , так как все возвращаемые ссылки имеют ряд включены, например, N1, NE1. Поэтому мы просто используем SUBSTITUTEдля удаления 1из всех ссылок.


1
Будет =IF(1,"N NE E SE S SW W NW")действительным?
Восстановить Монику

3
@squid Да, это действительно так! Однако я искал альтернативу, которая не требовала, чтобы строка была заключена в кавычки.
i_saw_drones

Как это работает?
Анатолий

@anatolyg Я добавил раздел объяснений, надеюсь, это понятно.
i_saw_drones


7

Древесный уголь , 14 байтов

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

Попробуйте онлайн! Ссылка на подробную версию кода ... которая является просто строкой, которая должна быть напечатана, так как автодебозировщик заботится о сжатии строки.

Печать несжатой строки занимает 19 байт, поскольку Charcoal печатает ASCII буквально для печати. Лучший алгоритмический ответ, который я мог придумать, к сожалению, занимает 20 байтов:

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

Попробуйте онлайн! Вывод с использованием формата массива (объединение элементов в пробелах будет стоить два байта). Работает, замечая, что буквы строки SNWEиспользуются только тогда, когда текущий внешний индекс равен или равен 1 (по модулю 8) в любом направлении от соответствующего элемента списка индексов 4,0,6,2.


7

мозговой трах , 117 байт

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

Попробуйте онлайн!

Этот код сначала создает символы «EN SW» в памяти, а затем перемещается назад и вперед для их печати. Пространство посередине, потому что оно печатается чаще всего. N и S и W и E никогда не появляются вместе, поэтому они находятся на противоположных сторонах памяти. Для оптимизации некоторые из окончательных уменьшений происходят во время фазы вывода.


1
ОК, это крутой ответ. Думаю, ты победил меня в этом. +1 за -1 :-)
ElPedro

1
Кстати, забыл сказать, добро пожаловать на сайт Code Golf. С нетерпением жду возможности
пообщаться

1
Добро пожаловать! Попробуйте добавить объяснение или ссылку на онлайн-переводчика для программы. Смотрите другие ответы для примеров. Короткие ответы только для кода имеют тенденцию автоматически помечаться как некачественные.
mbomb007

1
Спасибо, я могу добавить объяснение моего кода. Я также постараюсь понять, как работают онлайн-ссылки.
Елена

1
@ Елена Для ссылки вы можете проверить ссылку «Попробуйте онлайн» в моем ответе. Если вы вставили свой код и запустили его, вы можете нажать на иконку ссылки и получить идеально отформатированный код, который вы можете просто скопировать и вставить здесь. Работает как магия и поддерживает множество языков. Стоит попробовать.
ElPedro


5

Желе ,  16  15 байт

“¤œỵpq⁵’ṃ“NESW 

Полная программа печати текста

Попробуйте онлайн!


16 ...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

Ссылка niladic, которая выдает список списков (строчных) символов.

Попробуйте онлайн!


Альтернатива 15 как niladic Link , который дает список (строчных) символов (с пробелами): “¡XÇŀqỵÑ’ṃ“¡⁴ṁ».


5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20 и т. Д.) Использовано 28 байтов токена BASIC

 0 PRINT"N NE E SE S SW W NW

В Commodore BASIC вам не требуется закрывающая кавычка PRINTили LETоператоры, поскольку интерпретатор автоматически закрывает их, это сохраняет один токен BASIC.

В качестве альтернативы можно просто использовать прямой режим следующим образом:

Commodore BASIC 23 символа PETSCII (+ RETURNдля выполнения)

?"N NE E SE S SW W NW

Я не уверен, как посчитать количество байтов, использованных в этом случае, как в соответствии с интерпретатором, ?и PRINTиспользовать то же количество байтов, и в памяти нет ни одной программы.


1
PRINTтакже может быть заменен ?, сохраняя четыре байта.
Джеймс

1
Нет это не правда; PRINTи ?использовать такое же количество жетонов BASIC. Я не считаю символы PETSCII, поскольку они не очень отражают объем доступной памяти, используемой интерпретатором.
Шон Бебберс

1
После всех этих лет я все еще изучаю новые вещи о Коммодоре. Спасибо, Шон! c64-wiki.com/wiki/BASIC_token
Джеймс

Вот тот, который я сделал ранее (для C64) -> pastebin.com/NMYzTC7k
Шон Бебберс

4

Japt , 16 байт

Возвращает массив строчных букв. Сжатая строка составляла 18 байт, но aвместо этого использовалась в качестве разделителя, а затем разбивалась на нее, что сокращалось.

`nÂà!Z°°nw`qa 

Попробуйте - нижний колонтитул форматирует вывод.


4

Deadfish ~ , 138 байт

{{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

Попробуйте онлайн!

Таким образом, вывод в нижнем регистре с символами новой строки лучше, чем по умолчанию (верхний регистр с пробелами).

Этот код был сгенерирован моим оптимизатором, написанным на C ++ (спасибо squid за другую идею оптимизации!):

#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';
}


4

Пакетный файл, 19 байт

В вопросе никогда не говорилось, что вы должны были выводить N NE E SE S SW W NWи ничего больше, или что он не мог выйти из-за ошибки, после этого этот код только выдает ошибку, но не выходит из-за нее.

N NE E SE S SW W NW

Выход

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

Пакетный файл, 25 байт

Только N NE E SE S SW W NWвывод без ошибок или сбоев.

@echo N NE E SE S SW W NW

Вы можете сохранить байт, заменив компакт-диск просто кавычками, например, 'N NE E SE S SW W NW'- вы получите что-то вроде: N NE E SE S SW W NW - command not found
Дьюи Морган

4

Python2, 59 байт

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

Магическое число - это объединенные трехбитные индексы в строку символов, в обратном порядке, чтобы мы могли начать итерации в LSB.


Я потратил некоторое время, пытаясь сжать магическое число, но повторение строки символов с помощью умножения, чтобы учесть дополнительные индексы, не сработало из-за необходимости кодирования для пробела - лучшее, что я получил для перекрывающихся индексов в поиске, добавил больше символов в Строка, состоящая из цифр, удаленных из магического числа (включая пару неудачных небезразличных в середине):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

Зачем делать их простыми, если вы можете сделать это сложным? :-)
ГБ

4

K (нгн / к) , 23 22 байта

-1 байт благодаря ngn!

"WNES"@5\7108085518230

Попробуйте онлайн!

J , 34 30 байт

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

Попробуйте онлайн!


Гален, потому что повторение букв было бы короче. Я хотел бы увидеть этот ритм ... Мне не удалось это сделать
Иона

1
Да, эхо будет 4 + 19 байт. У меня нет идей получше.
Гален Иванов

1
для k: если мы поменяем местами " "<-> "W"( 0<-> 4в базе 5), пробел будет в конце, и мы можем удалить его, потому что индексация строк за пределами границ в любом случае дает пробел:"WNES"@5\7108085518230
ngn

@ngn Спасибо!
Гален Иванов

1
@GalenIvanov хорош и для высокопроизводительных баз данных :) Артур спроектировал k в качестве основного языка для kdb +
ngn


3

Брахилог , 19 байт

"NNEESESSWWNW"ḍ₄ḍᵐc

Попробуйте онлайн!

Выходы в виде списка. ḍ₄ḍᵐcсохраняет два байта при записи семи пробелов и делает весь предикат строковым литералом, так что, по крайней мере, он связывает PHP ...

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

Я пытался быть умным с этим 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc, но он не мог правильно понять SE или NW, и все равно на байт длиннее.


3

Пробел , 151 байт

[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]

Буквы S(пробел), T(табуляция) и N(новая строка) добавляются только как подсветка.
[..._some_action]добавлено только для пояснения.

Попробуйте онлайн (только с необработанными пробелами, вкладками и новыми строками).

Объяснение:

  1. Вставьте значения Unicode минус константу 84 для символов «WN W WS S ES E EN N» в стек (обратите внимание, что строка помещается в обратном порядке). Кроме того, я использую несколько копий ранее выдвинутых значений для сохранения байтов, где это возможно.
  2. Затем запустите бесконечный цикл, который выполняет следующее:
    1. Добавьте константу 84 к текущему значению Юникода
    2. Распечатайте его как символ для STDOUT

Константа 84генерируется этой Java-программой, которую я написал для другой задачи, на которую я ответил в Whitespace .


3

MathGolf , 20 17 байт

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

-3 байта благодаря @maxb .

Попробуйте онлайн.

Объяснение:

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

1
17 байтов . Это было забавное испытание. Я пробовал это раньше, но в конечном итоге, где вы сделали. Я думаю, что самое большее, что вы могли бы сделать из этого, это еще 1 байт, но я не мог найти более короткий путь.
максимум

@maxb Ах, хороший подход. Я должен признать, что этот код размером с блок X ( Éи Äв этом случае) все еще иногда смущает меня .. Иногда я не уверен, когда я использую или не должен использовать эти кодовые блоки. Вы m+не используете один, например. Но Äэто кодовый блок размера 1. Я mÅî╪только что попытался посмотреть, что произошло, поэтому теперь я понимаю, почему Äдля начала существует кодовый блок размера 1 . :)) Спасибо за -3 байта. Я еще многому учусь.
Кевин Круйссен

1
Хорошее объяснение! Я пытался найти решение, не преобразовывая его в список символов, но команда zip оказалась немного неэффективной. Для блоков кода думайте о них как о заменах, используемых вместо {}. mÅî╪создает отображение, но у него нет цикла for внутри отображения. Если вы напишите m{î{╪}}, возможно, вам будет легче увидеть, что код «map to: loop <index> times и вращает строку в каждом цикле». Причина, по которой m+его нет, заключается в том, что некоторые команды имеют неявные 1-байтовые блоки (map, filter, Reduce и т. Д.), Но îне являются командой, предназначенной для использования в сочетании с блоком.
максимум

1
@maxb Я действительно знал, что кодовые блоки были более коротким вариантом {...}, но я вроде забыл, integer{что это цикл for. :) Теперь это îÄ╪имеет больше смысла. Спасибо за объяснение!
Кевин Круйссен

2

CSS , 42 39 байт

(спасибо каменному паукообразному за исправленную версию)

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


1
-3 байта:body:after{content:"N NE E SE S SW W NW"
каменный паукообразный

О, я забыл, это действительно хорошо, обновлено :)!
roberrrt-s

2

Семя , 6014 байта

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

Создает следующую программу befunge:

"WN W WS S ES E EN N">:#,_@


2

Сборка (x86, Linux), 68 байт

$ 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$

Источник:

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'

Код в основном взят из кратчайшего ELF для "Hello world \ n"?



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.