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.
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.1, 1+i, i, -1+i, -1, -1-i, -i, 1-i
entã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.Respostas:
Tela , 12 bytes
Experimente aqui!
A string, simplesmente compactada.
fonte
"NESW "
) e, em seguida, na base-5 armazena o indivíduo personagens.bash (24 bytes)
usando expansão de chave
tem o mesmo comprimento da codificação
no entanto, torna-se mais interessante ao emitir mais pontos da bússola
cinta de expansão
caso contrário, se a ordem puder ser alterada (17 bytes), o truque é que, sem aspas, o parâmetro empy string desaparece
fonte
mount -t proc{,,}
cp file{,.bak}
Mornington Crescent ,
43953823 bytesExperimente 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
,W
em 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 apartir 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:
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.
fonte
Ne
, asden,Sw
iss Cottage, Acton Town
e Mansion House
) 2. Tente explorar o fato de Paddington tornar mais fácil concatenar `W 'do queW
. Isso requer um pouco mais de sobrecarga para 'atualizar' Paddington, para que não ganhe nada.PHP , 19 bytes
Experimente online!
Tirando isso do caminho. Alguém fará isso eventualmente.
fonte
brainfuck ,
142139131119 bytesExperimente 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!".
fonte
Flak cerebral , 204 bytes
Experimente online!
fonte
MarioLANG ,
249221 bytesExperimente online!
fonte
Peixe morto ~ ,
188183 bytes-5 graças ao squid
Experimente online!
fonte
{i}dc
no final de 183Fórmula do Excel,
5957 bytesO seguinte deve ser inserido como uma fórmula de matriz ( Ctrl+ Shift+ Enter):
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:
Depois de:
Como funciona
A
ADDRESS
função retorna uma string que representa uma referência com base em dois parâmetros,row
ecol
. 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
ADDRESS
e 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 colunaN
, a Coluna 369 é a colunaNE
.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 usamosSUBSTITUTE
para remover o1
de todas as referências.fonte
=IF(1,"N NE E SE S SW W NW")
válido?Triangularidade , 71 bytes
Experimente online!
Existem dois espaços na última linha para atingir a contagem de bytes requerida pela triangularidade.
fonte
Carvão , 14 bytes
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:
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
SNWE
sã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 índices4,0,6,2
.fonte
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.
fonte
Python 2 ,
62615853 bytesExperimente online!
Não é ótimo, mas pelo menos não é uma impressão simples.
fonte
Geléia ,
1615 bytesUm 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ỵÑ’ṃ“¡⁴ṁ»
.fonte
Commodore BASIC (TheC64Mini, C64, C128, VIC-20 etc.) 28 bytes BASIC tokenizados usados
No Commodore BASIC, você não precisa de aspas
PRINT
ouLET
declaraçõ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 (+
RETURN
para executar)Não sei como contar o número de bytes usados nesta instância, de acordo com o intérprete,
?
ePRINT
usar o mesmo número de bytes, e não há nenhum programa armazenado na memória.fonte
PRINT
também pode ser substituído?
, economizando quatro bytes.PRINT
e?
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.Japonês , 16 bytes
Retorna uma matriz de seqüências em minúsculas. A seqüência de caracteres compactada tinha 18 bytes, mas utilizava
a
como delimitador e depois dividia-se com o que resultou mais curto.Experimente - o rodapé formata a saída.
fonte
Peixe morto ~ , 138 bytes
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!):
fonte
Arquivo em lote, 19 bytes
A questão nunca afirmou que você tinha que produzir
N NE E SE S SW W NW
e 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.Resultado
Arquivo em lote, 25 bytes
N NE E SE S SW W NW
Saída apenas sem erros ou falhas.fonte
'N NE E SE S SW W NW'
- você receberá algo como:N NE E SE S SW W NW - command not found
Python2, 59 bytes
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):
fonte
K (ngn / k) ,
2322 bytes-1 byte graças a ngn!
Experimente online!
J ,
3430 bytesExperimente online!
fonte
" "
<->"W"
(0
<->4
na 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
05AB1E , 14 bytes
Experimente online!
Isso imprime a string, exceto em minúsculas.
fonte
•
para -1Braquilog , 19 bytes
Experimente online!
Saídas como uma lista.
ḍ₄ḍᵐc
economiza dois bytes escrevendo sete espaços e tornando o predicado inteiro uma string literal, pelo menos vincula o PHP ...Tentei ser inteligente
3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc
, mas não conseguiu acertar SE ou NW e, de qualquer forma, é um byte mais longo.fonte
Espaço em branco , 151 bytes
Letras
S
(espaço),T
(tabulação) eN
(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:
A constante
84
é gerada por este programa Java que escrevi para outro desafio que respondi no Whitespace .fonte
MathGolf ,
2017 bytes-3 bytes graças a @maxb .
Experimente online.
Explicação:
fonte
É
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. Seum+
não usa um por exemplo. Mas vocêÄ
é um bloco de código do tamanho 1. Ainda tenteimÅî╪
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.{}
.mÅî╪
cria o mapeamento, mas não possui um loop for dentro do mapeamento. Se você escreverm{î{╪}}
, 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 qualm+
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.{...}
, mas eu meio que esqueci queinteger{
é um loop for. :) Agora,îÄ╪
faz muito mais sentido. Obrigada pelo esclarecimento!CSS ,
4239 bytes(graças a um aracnídeo de pedra pela versão revisada)
fonte
body:after{content:"N NE E SE S SW W NW"
Semente , 6014 bytes
Gera o seguinte programa anterior:
fonte
Hodor , 177 bytes
Experimente online!
fonte
Montagem (x86, Linux), 68 bytes
Fonte:
Código extraído principalmente do Short ELF para "Hello world \ n"?
fonte
Gelatina , 16 bytes
Experimente online!
Com rodapé para imprimir separado por espaço
Um link niládico que retorna uma lista de strings. 2 bytes mais curtos (e sem dúvida mais interessantes) do que a string compactada no Jelly.
fonte
C # (compilador interativo do Visual C #) , 24 bytes
Experimente online!
fonte