Desafio
Dada a entrada na forma em <n1>, <n2>
que o número pode ser -1, 0 ou 1, retorne a direção cardinal correspondente . Os números positivos movem-se para leste no eixo x e o sul no eixo y, os números negativos movem-se para oeste no eixo x e o norte no eixo y.
Saída deve ser na forma South East
, North East
,North
. Faz distinção entre maiúsculas e minúsculas.
Se a entrada for 0, 0, seu programa deve retornar That goes nowhere, silly!
.
Exemplo de entrada / saída:
1, 1
-> South East
0, 1
-> South
1, -1
-> North East
0, 0
-> That goes nowhere, silly!
Isso é código-golfe , a resposta mais curta em bytes vence.
code-golf
string
kolmogorov-complexity
Matias K
fonte
fonte
Respostas:
Japonês ,
5551 bytesExplicação
Experimente online!
fonte
Python,
10187 bytesSolução realmente ingênua.
Obrigado a @Lynn por salvar 14 bytes! Alterações: o uso do método string.split na verdade o torna mais longo; _; E também, índices negativos existem em python.
fonte
lambda x,y:('','South ','North ')[y]+('','East','West')[x]or'That goes nowhere, silly!'
lambda x,y:'North htuoS'[::x][:6]+'EastseW'[::y][:4]
Edit: provavelmente agora será muito longo, mas você pode fazer o segundo corte[:6*x**2]
, da mesma forma para a cadeia Leste / Oeste, se você puder contornar o erro na primeira fatia.lambda x,y:('North ','South ')[y+1]+('West','East')[x+1]or'That goes nowhere, silly!'
é mais curto por 2 bytesSouth East
para(0, 0)
. Obrigado mesmo assim!PHP, 101 bytes
fonte
Perl 6 , 79 bytes
Tente
Expandido:
fonte
JavaScript (ES6),
1061009793 bytesÉ uma abordagem muito simples. Consiste em alguns operadores ternários aninhados juntos -
Casos de teste
fonte
a!=0
pode ser substituído por apenasa
, pois 0 é falso e todos os outros valores são verdadeiros. Além disso, receber entrada na sintaxe de currying é mais curto, e o appoach da matriz também é mais curto.f=a=>b=>
e chamando a função comof(1729)(1458)
; que é ocurrying syntax
que @Luke mencionou.a|b
vez dea||b
. Supondo que a entrada consista apenas em -1, 0 ou 1 (o que não está claro para mim), você pode substituira>0
eb>0
por~a
e~b
.a?(...):""
/b?(...):""
Batch, 156 bytes
The
for
loop acts as a lookup table to filter when the (possibly negated) parameter equals -1, and concatenating the matching words. If nothing is selected then the silly message is printed instead.fonte
JavaScript (ES6), 86 bytes
Explicação
Chame-o com sintaxe de curry (
f(a)(b)
). Isso usa índices de matriz. Se ambosa
eb
forem 0, o resultado é uma sequência vazia e falsa. Nesse caso, a sequência após o||
é retornada.Tente
Experimente todos os casos de teste aqui:
fonte
GNU sed , 100 + 1 (sinalizador r) = 101 bytes
Por design, o sed executa o script quantas vezes houver linhas de entrada, para que você possa executar todos os casos de teste em uma execução, se necessário. O link do TIO abaixo faz exatamente isso.
Experimente online!
Explicação:
O espaço de padrão restante no final de um ciclo é impresso implicitamente.
fonte
05AB1E ,
484543 bytesExperimente online!
Explicação
fonte
Jelly, 40 bytes
Try it online!
fonte
Japt, 56 bytes
Try it online! | Test Suite
Explanation:
fonte
00
is exactly the same as0
, as the extra digit gets removed ;)Retina,
848281 bytes1 byte saved thanks to @seshoumara for suggesting
0...?
instead of0\w* ?
Try it online!
fonte
Nor
andSou
)0...?
.Swift 151 bytes
fonte
PHP, 95 bytes.
This simply displays the element of the array, and if there's nothing, just displays the "default" message.
This is meant to run with the
-r
flag, receiving the coordenates as the 1st and 2nd arguments.fonte
C#,
95102 bytesGolfed
Ungolfed
Ungolfed readable
Full code
Releases
+ 7 bytes
- Wrapped snippet into a function.95 bytes
- Initial solution.Notes
I'm a ghost, boo!
fonte
(a,b)=>{...}
bita=>b=>
, talvez não precise do()
contornoa|b
, talvez seja possível usar seqüências de caracteres interpoladas para criar a sequência de caracteres melhor()
redor doa|b
, eu preciso disso, caso contrárioOperator '|' cannot be applied to operands of type 'int' and 'bool'
. Eu também tentei as seqüências interpoladas, mas não dei muito devido aos""
erros que me deram.Scala, 107 bytes
Experimente online
Para usar isso, declare isso como uma função e chame-o:
Como funciona
fonte
C, 103 bytes
fonte
Java 7, 130 bytes
Explicação:
Código do teste:
Experimente aqui.
Resultado:
fonte
CJam , 68 bytes
Experimente online! ou verifique todos os casos de teste
Imprime um espaço à direita em
[0 -1]
ou[0 1]
(North
ouSouth
).Explicação
fonte
Röda, 100 bytes
Try it online!
This is a trivial solution, similar to some other answers.
fonte