Dati 4 punti sui piani 2D A, B, C, D, calcola l'area della regione di intersezione dei triangoli OABe OCD, dove si Otrova il centro del piano, avendo coordinate (0, 0).
Gli algoritmi che funzionano in costante complessità temporale (in termini di operazioni aritmetiche) sono incoraggiati, ma non forzati.
Regole
- Ogni punto è rappresentato come due numeri reali, indica le loro coordinate X e Y.
- Facoltativamente, se il tuo linguaggio di programmazione (o qualche libreria del tuo linguaggio di programmazione) ha un tipo incorporato
Pointo equivalente, è consentito prendere l'Pointoggetto come input.
- Facoltativamente, se il tuo linguaggio di programmazione (o qualche libreria del tuo linguaggio di programmazione) ha un tipo incorporato
- L'input è dato come 4 punti, nei formati, incluso ma non limitato a:
- Un elenco di 8 coordinate.
- Un elenco di 4 punti, ogni punto può essere rappresentato in qualsiasi formato conveniente.
- Due liste di 2 punti.
- eccetera.
- Non puoi assumere un ordine particolare dei punti (ordine antiorario o orario)
- Non si può presumere che il punto
Osia passato come input. In altre parole, il programma non deve accettare e utilizzare input estranei. - Non puoi presumere che tutti i punti siano diversi. In altre parole, i triangoli possono essere degenerati. È inoltre necessario gestire tale caso (vedere i casi di prova di seguito)
- La differenza assoluta o relativa deve essere inferiore rispetto ai casi di test di esempio riportati di seguito.
10-3
Criteri vincenti
Questo è code-golf , la risposta più breve in byte vince!
Esempi di casi di test
Ax Ay Bx By Cx Cy Dx Dy area
5 1 1 3 -1 0 0 -1 0
5 1 1 3 -1 0 0 0 0
5 1 1 3 0 0 0 0 0
5 1 1 3 3 4 4 -3 4.50418
5 1 1 3 1 2 2 1 1.5
5 1 1 3 -2 5 4 -2 1.74829
5 1 1 3 -2 5 5 4 2.96154
5 1 1 3 3 5 5 4 1.88462
5 1 1 3 3 5 3 1 3.92308
5 1 1 3 3 5 4 -1 5.26619
5 1 1 3 5 1 4 -1 0
5 1 1 3 5 1 1 3 7
1 3 1 3 5 1 1 3 0
1 3 1 3 1 3 1 3 0
4 8 4 -1 -2 6 -2 -3 0
1.2 3.4 -0.3 4.2 5 7.6 -1.1 2.4 2.6210759326188535
3.1 0.6 0.1 7.2 5.2 0.7 0.9 8 9.018496993987977
Se qualcuno lo desidera, ecco gli output per il primo gruppo di casi di test in forma esatta:
0
0
0
46375/10296
3/2
1792/1025
77/26
49/26
51/13
23345/4433
0
7
0
0
0
Immagine dell'illustrazione per il test case 5 1 1 3 3 4 4 -3(l'area del quadrilatero verde è l'output previsto):
[
]
