Compito
Data una rappresentazione di una linea, genera il numero di quadranti che quella linea attraversa.
Rappresentazioni valide di una linea
Puoi rappresentare una linea come
- Tre interi con segno
A,BeCche condividono alcun fattore comune e doveAeBnon sono entrambi pari a zero, che rappresenta la lineaAx + By = C, - Quattro interi con segno , , , e , che rappresenta la linea passante per i punti e , o
X1Y1X2Y2(X1, Y1)(X2, Y2) - Un tipo di dati che descrive una linea, se la tua lingua ne ha una (deve supportare linee verticali).
Si può non prendere in ingresso in qualsiasi formato che non consente una linea verticale (es forma pendenza-intercetta). Se si sceglie di prendere numeri interi come input, si può presumere che si trovino nell'intervallo inclusivo [-127, 128].
specificazioni
- L'output sarà sempre 0, 2 o 3 (una linea non può mai passare attraverso tutti e quattro i quadranti, né può passare solo attraverso uno solo).
- Si considera che una linea su un asse non passi attraverso alcun quadrante. Si considera che una linea attraverso l'origine passi solo attraverso 2 quadranti.
- Non è necessario restituire quali quadranti vengono passati (anche se i casi di test li includono per chiarezza).
- Questo è code-golf , quindi vince la risposta valida più breve (misurata in byte).
Casi test
Dovrai convertirli in un formato adatto prima di usarli.
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)