Divisez le premier quadrant (y compris l'axe x positif, l'axe y positif et l'origine) en grilles 1x1, chaque grille étant étiquetée par les coordonnées de son coin inférieur gauche, comme illustré ci-dessous:
Notez que chaque grille contient ses limites et ses sommets. En utilisant des symboles mathématiques, la grille étiquetée (m, n) représenterait le carré {(x,y) | m ≤ x ≤ m+1, n ≤ y ≤ n+1}
.
Compte tenu d' une ligne droite sous la forme d' ax+by+c=0
avec des nombres entiers a
, b
et c
, et une grille représentée par (m,n)
, la sortie si la ligne passe à travers la grille, à savoir si un point quelconque de la grille donnée est sur la ligne.
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
Veuillez suggérer plus de tests dans les commentaires.
C'est du code-golf . La réponse la plus courte en octets l'emporte. Des échappatoires standard s'appliquent.
[a, b, c]
(la ligne) et [m, n]
(le carré)?