Tarefa
Dada a representação de uma linha, produza o número de quadrantes pelos quais essa linha passa.
Representações válidas de uma linha
Você pode representar uma linha como
- Três inteiros assinados
A
,B
eC
que compartilham fator não comum e ondeA
eB
não são ambos zero, o que representa a linhaAx + By = C
, - Quatro inteiros assinados , , , e , representando a linha passando pelos pontos e
X1
Y1
X2
Y2
(X1, Y1)
(X2, Y2)
, ou - Um tipo de dados que descreve uma linha, se o seu idioma tiver um (ele deve suportar linhas verticais).
Você não pode receber entradas em nenhum formato que não permita uma linha vertical (por exemplo, formulário de interceptação de declive). Se você optar por usar números inteiros como entrada, poderá assumir que eles estão no intervalo inclusivo [-127, 128]
.
Especificações
- A saída será sempre 0, 2 ou 3 (uma linha nunca pode passar pelos quatro quadrantes, nem apenas um).
- Considera-se que uma linha em um eixo não passa por nenhum quadrante. Considera-se que uma linha através da origem passa apenas por 2 quadrantes.
- Você não precisa retornar pelos quadrantes que estão passando (embora os casos de teste os incluam para maior clareza).
- Isso é código-golfe , então a resposta mais curta e válida (medida em bytes) vence.
Casos de teste
Você precisará convertê-los para um formato adequado antes de usá-los.
1x + 1y = 1 -> 3 (quadrants I, II, and IV)
-2x + 3y = 1 -> 3 (quadrants I, II, and III)
2x + -3y = 0 -> 2 (quadrants III and I)
1x + 1y = 0 -> 2 (quadrants II and IV)
3x + 0y = 6 -> 2 (quadrants I and IV)
-3x + 0y = 5 -> 2 (quadrants II and III)
0x + -8y = 4 -> 2 (quadrants III and IV)
0x + 1y = 0 -> 0 (lies on the x-axis)
1x + 0y = 0 -> 0 (lies on the y-axis)
Respostas:
Python 3 , 24 bytes
Experimente online!
fonte
'320'[a.count(0)]
e retornar o valor em forma de string seria aceitável?Gelatina , 5 bytes
Experimente online!
Não é mais baseado na resposta de Leaky!
fonte
ċ0ị2,0,3
salva um byteTL’ȧ$
. Não sei Jelly, então isso pode ser golfableJavascript (ES6),
302422 bytesEsta é a minha primeira vez tentando jogar golfe em Javascript.
Tem que haver uma maneira melhor de contar zeros ...-6 bytes graças a Herman Lauenstein, -2 bytes para lembrar as precedências do operador.
Solução alternativa de 24 bytes para retornar uma sequência:
fonte
(a,b,c)=>3<<(!a+!b+!c)&3
05AB1E , 6 bytes
Experimente online!
Baseado na resposta de Leaky Nun.
fonte
SOGL V0.12 , 8 bytes
Experimente aqui!
Baseado na resposta de Leaky Nun .
fonte
GolfScript ,
1614 bytesExperimente online!
Este programa utiliza uma matriz de 3 números inteiros representando os coeficientes na equação
Ax + By = C
Exemplo de entrada / saída
Como funciona
Isso foi um pouco complicado no começo para eu descobrir uma maneira matemática de calcular isso. No entanto, existem apenas 8 configurações possíveis, como
a != 0 & b != 0 & c != 0
Acabei por chegar à seguinte função.
e tudo pode ser condensado em um único problema de matemática
fonte
{!!}%
vez de[{!!}/]
.{:!:!:+_1>*}
.:!
é equivalente a{!}%
), 2) atalho para redução (:+
é equivalente a{+}*
), 3) que.
é alterado para_
(porque CJam possui flutuadores) e 4) que CJam não possui entrada na pilha por padrão, o que significa que você quebra o código{}
para torná-lo uma função.Retina , 13 bytes
Experimente online
Também com base na resposta de Leaky Nun .
fonte
10
por exemplo. O primeiro regex precisaria ser\b0
.JavaScript, 25 bytes
Baseado na resposta de Leaky Nun.
fonte
Haskell , 22 bytes
Experimente online!
Solução sem pontos, 27 bytes
Experimente online!
fonte
Perl 6, 18 bytes
fonte
ABCR , 30 bytes
A entrada está no formato em
A,B,C
que as vírgulas podem ser substituídas por qualquer caractere não numérico e não-
.Ainda não há intérprete on-line, mas aqui está uma explicação:
fonte
APL (Dyalog Unicode) ,
1411 bytesExperimente online!
⎕IO
é0
. Obrigado a @ Adám por -3 bytes!fonte
0⌈3-×⍨+/0=⎕
Deorst, 12 bytes
Try it online!
Somewhat based off Leaky's answer; uses the same premise, but a different mapping method.
How it works
Deorst has a count occurrences builtin, but doesn't (for some reason) have an indexing command, so I had to create the following mapping, where the left is
a.count(0)
and the right is the wanted resultThe program itself works like this (example input of
[1,1,1]
)fonte
Add++, 23 bytes
Try it online!
Based off both my Deorst answer and Leaky's Python answer
How it works
However, I think I've been using functions too much in Add++, rather than the main code body. So I attempted to do this using both functions, and the code body, and resulted in a much nicer 50 byte piece (yes, that is the longest answer here):
Try it online!
fonte