Imprimir “N NE SE SE S SW W NW”

47

Isso parece quase trivial, mas, depois de algum esforço, não consegui vencer a solução literal em J, pensei que poderia ser um desafio decente (embora, para ser claro, esse não seja um desafio específico de J).

O título diz tudo. Você simplesmente precisa escrever um programa ou função (sem argumentos) que retorne ou imprima:

N NE E SE S SW W NW

Você pode usar novas linhas no lugar de espaços.

Uma função sem argumento retornando uma matriz de seqüências de caracteres, como

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

também é aceitável.

As letras podem estar em maiúsculas ou minúsculas, mas não podem ser misturadas.

Jonah
fonte
9
Talvez permitir que eles sejam exibidos em qualquer ordem seria um pouco mais interessante
Jo King
3
@ JoKing Claro, eu vou remover isso. Honestamente, eu não esperava que ninguém enviasse respostas que usassem todo o valor literal - isso não está no espírito da pergunta. Como afirmo, surgiu porque eu não era capaz de vencer o literal em J, apesar da string ter regularidade e estrutura de um tipo. O ponto principal é explorar essa regularidade para vencer uma resposta literal. Mal para mim por não ser mais explícito. Permitir que qualquer ordem derrote isso também, então não quero fazer essa alteração.
Jonah
3
@UnrelatedString A idéia mais promissora que tive foi observar que as instruções correspondem a que eu levantei aos poderes 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5. Infelizmente, o código J necessário para mapear esses resultados em letras acabou sendo mais caro que um literal.
Jonah
1
Ah, esperto! Gostaria de saber se o mapeamento pode funcionar melhor para os números inteiros gaussianos, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-ientão você tem uma parte real ou imaginária por direção cardinal em vez de duas. Provavelmente é mais difícil gerá-los, a menos que haja alguma maneira de você arredondar esses poderes de i para longe de 0? Não sei o quão fácil ou difícil isso seria em J, mas é uma ideia.
String não relacionada
3
Parece que as entradas também devem mostrar a versão ingênua de "ecoar esta string" em seu idioma para comparação e julgar serem feitas no% reduzido?
Dewi Morgan

Respostas:

18

Tela , 12 bytes

>X½+T)AuS{⁹‟

Experimente aqui!

A string, simplesmente compactada.

dzaima
fonte
2
Você pode explicar como isso funciona com mais detalhes?
Dillanm 10/06
2
@Dillanm, não há muito mais a dizer - o Canvas possui um compressor embutido (deve ser acessível com ctrl + o → string compress) que, aqui, simplesmente armazena os caracteres necessários ( "NESW ") e, em seguida, na base-5 armazena o indivíduo personagens.
dzaima 10/06
56

bash (24 bytes)

usando expansão de chave

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

tem o mesmo comprimento da codificação

echo N NE E SE S SW W NW

no entanto, torna-se mais interessante ao emitir mais pontos da bússola

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

cinta de expansão

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

caso contrário, se a ordem puder ser alterada (17 bytes), o truque é que, sem aspas, o parâmetro empy string desaparece

echo {N,,S}{W,,E}
Nahuel Fouilleul
fonte
1
Isso é interessante, eu não sabia que você poderia ter uma posição vazia, é a expressão da chave!
flawr 10/06
1
@flawr Útil quando faz chroot:mount -t proc{,,}
gronostaj 10/06
7
Oucp file{,.bak}
Oliphaunt 10/06
43

Mornington Crescent , 4395 3823 bytes

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

Experimente online!

Como é um pouco demais esperar que você leia tudo isso, deixe-me dar uma rápida visão geral da minha abordagem. A idéia principal é armazenar 3 cópias dos personagens N, E, S, Wem várias estações da linha do círculo, através do banco - Hammersmith. Esses caracteres são construídos desde o início do nome de uma estação em Charing Cross. Em seguida, construa a   partir do meio de um nome de estação bem escolhido usando Mile End e Charing Cross e armazene-o no Bank para que possa ser coletado em Hammersmith na concatenação. Finalmente, concatene os personagens um a um em Paddington, copiando-os novamente via Bank-Hammersmith, caso precisem ser reutilizados posteriormente.


Eu acho que a solução atual está bastante próxima do ideal com essa estratégia, pelo menos em termos de número de estações visitadas: apenas duas vezes eu usei uma estação apenas para transporte:

  1. chegar a Seven Sisters (pela estação Victoria)
  2. e voltar para Mornington Crescent (via Bank).

Todas as outras visitas à estação foram, se eu não esqueci uma, armazenando / recuperando algo útil ou (parte de) usando a capacidade da estação.

Quanto aos comprimentos de linha, tentei escolher os nomes mais curtos da Circle Line, mas pode haver uma pequena melhoria lá. É possível que armazenar algo no District consiga economizar alguns bytes.

Lagarto discreto
fonte
Duas idéias para jogar isso um pouco mais: 1. pegue 'NE', 'SW', 'NW', 'SE' de uma única estação (usando, por exemplo Ne, asden, Swiss Cottage, Acton To wne Mansion Hou se) 2. Tente explorar o fato de Paddington tornar mais fácil concatenar `W 'do que W . Isso requer um pouco mais de sobrecarga para 'atualizar' Paddington, para que não ganhe nada.
Lagarto discreto
4
Isso usa regras de loop de Dollis Hill? Nesse caso, acho que pode ser aprimorado usando uma parábola da Argyle Street e talvez até uma versão ligeiramente modificada do protocolo Webb-Ellis.
Richard Ward
26

PHP , 19 bytes

N NE E SE S SW W NW

Experimente online!

Tirando isso do caminho. Alguém fará isso eventualmente.

640KB
fonte
8
Também funciona para HTML + JS.
Cœur
Poliglota com ///.
alguém
24

brainfuck , 142 139 131 119 bytes

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

Experimente online!

Simplesmente faça um loop 10 vezes para preencher as células com 30, 70, 80 e 90, depois recue e avance e ajusta os valores das células para imprimir os caracteres necessários. Não é muito diferente do padrão "Olá, mundo!".

ElPedro
fonte
7
Lol Eu nunca entendi como alguém pode "jogar golfe" nessas línguas obscuras. É difícil o suficiente para entender o que o código faz em primeiro lugar (isso é dito vindo de C ++ / Java background)
mackycheese21
10
@ mackycheese21 what? C ++ não ensinou você a amar a manipulação de ponteiros?
candied_orange 10/06
12
brainfuck pode ser esotérico, mas com certeza não chamaria isso de obscuro
Não relacionado a cadeia
3
@candied_orange C ++ me ensinou a odiar a manipulação de ponteiros e fugir std sempre que alguém mencionou :: :)
mackycheese21
1
@UnrelatedString obscuro, não. Obtuso, sim.
Rich
14

Flak cerebral , 204 bytes

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

Experimente online!

DJMcMayhem
fonte
4
Pontos deduzidos para embalagem.
Rich
12

MarioLANG , 249 221 bytes

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

Experimente online!

Charlie
fonte
10

Peixe morto ~ , 188 183 bytes

-5 graças ao squid

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

Experimente online!

um aracnídeo de pedra
fonte
1
{i}dcno final de 183
Restabelecer Monica
10

Fórmula do Excel, 59 57 bytes

O seguinte deve ser inserido como uma fórmula de matriz ( Ctrl+ Shift+ Enter):

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

Depois de entrar na fórmula como uma fórmula de matriz, destaque-o na barra de fórmula e avaliá-la utilizando F9para retornar o resultado, por exemplo:

Antes:
Antes da avaliação da fórmula

Depois de:
Antes da avaliação da fórmula

Como funciona

A ADDRESSfunção retorna uma string que representa uma referência com base em dois parâmetros, rowe col. O terceiro parâmetro controla qual tipo de referência é retornado, uma referência absoluta ou relativa. Por exemplo, =ADDRESS(1,2,4)retorna "B1".

Podemos fornecer uma matriz ADDRESSe usá-la como uma fórmula de matriz para retornar vários resultados, por exemplo, =ADDRESS(1,{1,2,3},4)retornos "A1","B1","C1".

Portanto, na minha resposta, a matriz fornecida ADDRESSé apenas o número da coluna relacionada aos pontos de bússola necessários, por exemplo, a Coluna 14 é a coluna N, a Coluna 369 é a coluna NE.

No entanto, nós não terminamos aqui desde todas as referências devolvidos têm a linha incluídos, por exemplo, N1, NE1. Portanto, simplesmente usamos SUBSTITUTEpara remover o 1de todas as referências.

i_saw_drones
fonte
1
Seria =IF(1,"N NE E SE S SW W NW")válido?
Restabelecer Monica
3
@ Squid Sim, seria mesmo! No entanto, eu estava procurando uma alternativa que não exigisse que a string fosse citada literalmente.
i_saw_drones 10/06
Como é que isso funciona?
anatolyg 11/06
@anatolyg Adicionei uma seção de explicações, espero que seja compreensível.
i_saw_drones 12/06
9

Triangularidade , 71 bytes

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

Experimente online!

Existem dois espaços na última linha para atingir a contagem de bytes requerida pela triangularidade.

Restabelecer Monica
fonte
7

Carvão , 14 bytes

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

Experimente online! Link é uma versão detalhada do código ... que é apenas a string a ser impressa, pois o auto-deverbosifier cuida da compactação da string.

A impressão da string descompactada leva 19 bytes, pois o Charcoal imprime ASCII imprimível literalmente. Infelizmente, a melhor resposta algorítmica que eu poderia ter leva 20 bytes:

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

Experimente online! Saídas usando formato de matriz (custaria dois bytes para unir os elementos nos espaços). Funciona observando que as letras da string SNWEsão usadas apenas quando o índice externo atual é igual ou está a 1 distância (módulo 8) em qualquer direção do elemento correspondente da lista de índices 4,0,6,2.

Neil
fonte
7

brainfuck , 117 bytes

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

Experimente online!

Este código criará primeiro os caracteres "EN SW" na memória e depois se moverá para frente e para trás para imprimi-los. O espaço está no meio, porque é impresso com mais frequência. N e S e W e E nunca aparecem juntos, portanto estão em lados opostos da memória. Para otimização, alguns dos decréscimos finais ocorrem durante a fase de saída.

Helena
fonte
1
OK, essa é uma resposta legal. Acho que você me venceu neste. +1 para -1 :-)
ElPedro
1
Aliás, esqueci de dizer, seja bem-vindo ao site da Code Golf. Ansioso para competir com você no futuro ☺
ElPedro
1
Bem vinda! Considere adicionar uma explicação ou um link a um intérprete online para o programa. Veja outras respostas para exemplos. Respostas curtas apenas de código tendem a ser automaticamente sinalizadas como de baixa qualidade.
mbomb007 12/06
1
Obrigado, posso adicionar uma explicação do meu código. Também tentarei entender como os links online funcionam.
Helena
1
@ Helena Para o link, você pode conferir o link "Experimente online" na minha resposta. Se você colar o código e executá-lo, poderá clicar no ícone do link e obter uma resposta de golfe com código perfeitamente formatado que você pode simplesmente copiar e colar aqui. Funciona como mágica e suporta muitos idiomas. Vale a pena tentar.
ElPedro 13/06
6

Python 2 , 62 61 58 53 bytes

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

Experimente online!

Não é ótimo, mas pelo menos não é uma impressão simples.

TFeld
fonte
5

Geléia ,  16  15 bytes

“¤œỵpq⁵’ṃ“NESW 

Um programa completo imprimindo o texto

Experimente online!


16 ...

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

Um link niládico que gera uma lista de listas de caracteres (minúsculos).

Experimente online!


Alternativa 15 como um link niladic que produz uma lista de caracteres (letras minúsculas) (com espaços): “¡XÇŀqỵÑ’ṃ“¡⁴ṁ».

Jonathan Allan
fonte
5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20 etc.) 28 bytes BASIC tokenizados usados

 0 PRINT"N NE E SE S SW W NW

No Commodore BASIC, você não precisa de aspas PRINTou LETdeclarações de fechamento , pois o intérprete o fechará automaticamente, pois isso salva um token BASIC.

Como alternativa, pode-se simplesmente usar o modo direto da seguinte maneira:

Commodore BASIC 23 caracteres PETSCII (+ RETURNpara executar)

?"N NE E SE S SW W NW

Não sei como contar o número de bytes usados ​​nesta instância, de acordo com o intérprete, ?e PRINTusar o mesmo número de bytes, e não há nenhum programa armazenado na memória.

Shaun Bebbers
fonte
1
PRINTtambém pode ser substituído ?, economizando quatro bytes.
James
1
Não Isso não é verdade; PRINTe ?use a mesma quantidade de tokens BASIC. Não estou contando caracteres PETSCII, pois não representa muito a quantidade de memória disponível sendo usada pelo intérprete.
Shaun Bebbers
1
Depois de todos esses anos, ainda estou aprendendo coisas novas sobre o Commodore. Obrigado Shaun! c64-wiki.com/wiki/BASIC_token
James
Aqui está um que eu fiz anteriormente (para o C64) -> pastebin.com/NMYzTC7k
Shaun Bebbers
4

Japonês , 16 bytes

Retorna uma matriz de seqüências em minúsculas. A seqüência de caracteres compactada tinha 18 bytes, mas utilizava acomo delimitador e depois dividia-se com o que resultou mais curto.

`nÂà!Z°°nw`qa 

Experimente - o rodapé formata a saída.

Shaggy
fonte
4

Peixe morto ~ , 138 bytes

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

Experimente online!

Portanto, a saída em minúsculas com novas linhas é melhor que o padrão (maiúsculas com espaços).

Este código foi gerado pelo meu otimizador, escrito em C ++ (graças ao squid por outra idéia de otimização!):

#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';
}
anatolyg
fonte
1
155
Restabelecer Monica
4

Arquivo em lote, 19 bytes

A questão nunca afirmou que você tinha que produzir N NE E SE S SW W NWe nada mais, nem que não pôde sair devido a erro depois de fazer isso, esse código apenas gera um erro, mas não sai devido a ele.

N NE E SE S SW W NW

Resultado

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

Arquivo em lote, 25 bytes

N NE E SE S SW W NWSaída apenas sem erros ou falhas.

@echo N NE E SE S SW W NW
BDM
fonte
Você pode salvar um byte substituindo o CD por apenas aspas, como 'N NE E SE S SW W NW'- você receberá algo como: N NE E SE S SW W NW - command not found
Dewi Morgan
4

Python2, 59 bytes

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

O número mágico são os índices de três bits unidos na sequência de caracteres, na ordem inversa, para que possamos começar a iterar no LSB.


Passei um tempo tentando reduzir o número mágico, mas repetir a cadeia de caracteres por meio da multiplicação para permitir índices extras não funciona devido à necessidade de codificação para o espaço - o melhor que obtive por índices sobrepostos na pesquisa adicionou mais caracteres ao string que dígitos removidos do número mágico (incluindo alguns infelizes problemas no meio):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))
Principalmente inofensivo
fonte
Por que simplificar o processo quando você pode torná-lo complicado? :-)
GB
4

K (ngn / k) , 23 22 bytes

-1 byte graças a ngn!

"WNES"@5\7108085518230

Experimente online!

J , 34 30 bytes

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

Experimente online!

Galen Ivanov
fonte
Galen, por ecoar o literal seria mais curto. Eu adoraria ver essa batida ... Eu não consegui fazer isso
Jonah
1
Sim, o eco seria de 4 + 19 bytes. Eu não tenho nenhuma idéia melhor para.
Galen Ivanov
1
para k: se trocarmos " "<-> "W"( 0<-> 4na base 5), o espaço estará no final e podemos removê-lo porque a indexação de string fora dos limites fornece um espaço de qualquer maneira:"WNES"@5\7108085518230
ngn
@ngn Obrigado!
Galen Ivanov
1
@ GalenIvanov também é bom para bancos de dados de alto desempenho :) arthur projetou k como o idioma subjacente para o kdb +
ngn 18/06/17
3

05AB1E , 14 bytes

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

Experimente online!

Isso imprime a string, exceto em minúsculas.

MilkyWay90
fonte
Basta remover a final para -1
Grimmy
3

Braquilog , 19 bytes

"NNEESESSWWNW"ḍ₄ḍᵐc

Experimente online!

Saídas como uma lista. ḍ₄ḍᵐceconomiza dois bytes escrevendo sete espaços e tornando o predicado inteiro uma string literal, pelo menos vincula o PHP ...

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

Tentei ser inteligente 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc, mas não conseguiu acertar SE ou NW e, de qualquer forma, é um byte mais longo.

String não relacionada
fonte
3

Espaço em branco , 151 bytes

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

Letras S(espaço), T(tabulação) e N(nova linha) adicionadas apenas como destaque.
[..._some_action]adicionado apenas como explicação.

Experimente online (apenas com espaços brutos, guias e novas linhas).

Explicação:

  1. Empurre os valores unicode menos a constante 84 para os caracteres "WN W WS S ES E EN N" para a pilha (observe que a string é pressionada ao contrário). Além disso, uso algumas cópias dos valores enviados anteriormente para salvar bytes sempre que possível.
  2. Em seguida, inicie um loop infinito, que faz o seguinte:
    1. Adicione a constante 84 ao valor atual do unicode
    2. Imprima como caractere para STDOUT

A constante 84é gerada por este programa Java que escrevi para outro desafio que respondi no Whitespace .

Kevin Cruijssen
fonte
3

MathGolf , 20 17 bytes

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

-3 bytes graças a @maxb .

Experimente online.

Explicação:

ÿ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
fonte
1
17 bytes . Este foi um desafio divertido. Eu tentei antes, mas acabei onde você fez. Acho que o máximo que você pode fazer com isso é mais 1 byte, mas não consegui encontrar uma maneira mais curta.
maxb 12/06
@ Maxb Ah boa abordagem. Devo admitir que esses códigos do tamanho de bloco X ( Ée Äneste caso) ainda me confundem um pouco às vezes. Às vezes, não tenho certeza de quando devo ou não preciso usar esses blocos de código. Seu m+não usa um por exemplo. Mas você Äé um bloco de código do tamanho 1. Ainda tentei mÅî╪ver o que aconteceu, e é por isso que agora entendo por que existe um bloco de código do tamanho 1 Äpara começar. :)) Obrigado pelos -3 bytes, no entanto. Ainda há muito a aprender.
Kevin Cruijssen 12/06
1
Boa explicação! Tentei fazer uma solução sem convertê-la em uma lista de caracteres, mas o comando zip era um pouco complicado. Para os blocos de código, pense neles como substitutos, usados ​​em vez de {}. mÅî╪cria o mapeamento, mas não possui um loop for dentro do mapeamento. Se você escrever m{î{╪}}, talvez seja mais fácil ver que o código é "mapear para: loop <index> vezes e girar a string a cada loop". A razão pela qual m+não existe um é que certos comandos possuem blocos implícitos de 1 byte (mapear, filtrar, reduzir etc.), mas înão é um comando que deve ser usado em combinação com um bloco.
maxb 12/06
1
@ maxb Eu realmente sabia que os blocos de código eram uma variante mais curta {...}, mas eu meio que esqueci que integer{é um loop for. :) Agora, îÄ╪faz muito mais sentido. Obrigada pelo esclarecimento!
Kevin Cruijssen
2

CSS , 42 39 bytes

(graças a um aracnídeo de pedra pela versão revisada)

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

roberrrt-s
fonte
1
-3 bytes:body:after{content:"N NE E SE S SW W NW"
um aracnídeo de pedra 12/06
Ah, eu esqueci, isso também é válido, atualizado :)!
roberrrt-s 12/06
2

Semente , 6014 bytes

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

Gera o seguinte programa anterior:

"WN W WS S ES E EN N">:#,_@
Krzysztof Szewczyk
fonte
2

Hodor , 177 bytes

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

Experimente online!

Steve
fonte
2

Montagem (x86, Linux), 68 bytes

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

Fonte:

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'

Código extraído principalmente do Short ELF para "Hello world \ n"?

Steve
fonte