Divida o primeiro quadrante (incluindo o eixo x positivo, o eixo y positivo e a origem) em grades 1x1, com cada grade rotulada pelas coordenadas do canto inferior esquerdo, conforme demonstrado abaixo:
Observe que cada grade contém seus limites e seus vértices. Usando símbolos matemáticos, a grade rotulada (m, n) representaria o quadrado {(x,y) | m ≤ x ≤ m+1, n ≤ y ≤ n+1}
.
Dada uma linha recta, na forma de ax+by+c=0
com números inteiros a
, b
e c
, e uma grade representada por (m,n)
, a saída se a linha passa através da grade, ou seja, se qualquer ponto da grelha é determinado na linha.
a b c m n output
1 1 0 0 0 true
1 1 0 1 1 false
1 1 0 0 2 false
1 1 -3 0 1 true
1 1 -3 0 0 false
2 -1 0 1 1 true
2 -1 0 1 0 false
2 -1 0 0 2 true
2 -1 0 0 1 true
2 -1 0 1 2 true
2 0 -1 0 0 true
2 0 -1 0 1 true
2 0 -1 0 2 true
2 0 -1 1 0 false
2 0 -1 1 1 false
0 2 -1 0 0 true
0 2 -1 1 0 true
0 2 -1 2 0 true
0 2 -1 0 1 false
0 2 -1 1 1 false
1 0 -1 0 0 true
1 0 -1 0 1 true
1 0 -1 0 2 true
1 0 -1 1 0 true
1 0 -1 1 1 true
Por favor, sugira mais casos de teste nos comentários.
Isso é código-golfe . A resposta mais curta em bytes vence. Aplicam-se brechas padrão .
[a, b, c]
(a linha) e [m, n]
(o quadrado)?