È ora di scavare le tue vecchie note di trigonometria dal liceo! La sfida è risolvere i lati e gli angoli sconosciuti di diversi triangoli. E come è consuetudine nel golf del codice, vince il codice di lavoro più piccolo.
Questo non è un problema banale; la mia implementazione di riferimento in python è attualmente di 838 837 caratteri, ma sono sicuro che sarai in grado di golf soluzioni molto più piccole.
Inoltre, se sei bloccato, questa sezione su Wikipedia dovrebbe farti andare avanti: Triangolo: calcolo dei lati e degli angoli .
Ingresso
Il triangolo seguente mostra i nomi dei lati e degli angoli utilizzati in questa sfida. Nota che i lati sono in minuscolo e gli angoli in maiuscolo.
L'input viene fornito come sei valori separati da spazio, sia su stdin
che come argomenti della riga di comando (a scelta). I sei valori corrispondono ai lati a, b, c
e agli angoli A, B, C
. I lati sconosciuti sono indicati come punti interrogativi ( ?
). Entrambi gli angoli di ingresso e uscita devono essere in radianti. Si può presumere che i valori di input siano corretti (non è necessario convalidare nulla). Si può anche supporre che il triangolo di input sia non degenerato e che tutti i lati e gli angoli siano diversi da zero.
Il seguente esempio di input indica che lato a
è 8
, lato b
è 12
e angolo A
è 0.5
radianti:
8 12 ? 0.5 ? ?
Produzione
L'output viene fornito nello stesso formato dell'input: sei numeri separati da spazi su stdout
. L'unica eccezione è quando non è possibile risolvere il triangolo di input, quindi è "No solution"
necessario scrivere la stringa stdout
. Se sono possibili due soluzioni, vengono entrambe emesse con una nuova linea tra di loro.
Di seguito è riportato l'output per l'input sopra:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
L'output non è richiesto per avere molta precisione, ma è necessario almeno un paio di decimali.
Regole
- L'input viene letto dagli
stdin
argomenti della riga di comando - L'output viene scritto in
stdout
- Se sono possibili due soluzioni con l'input dato, emettere entrambi
- Se ci sono troppo poche informazioni per ottenere una o due soluzioni chiare, consideralo un
"No solution"
caso - Non è possibile utilizzare alcun codice incorporato o preesistente (ovviamente è possibile utilizzare le funzioni trig, ma non "
solveTriangle
" o simili) - Il codice più corto vince
Casi test
Nel 3 4 5 ? ? ?
Su 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
Nel ? 4 ? 0.64 0.92 1.57
Su 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
Nel ? ? 5 ? 0.92 ?
Su No solution
Nel ? ? 5 ? 0.92 1.57
Su 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
Nel 8 12 ? 0.5 ? ?
Out (due soluzioni)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Nel 8 12 ? ? .5 ?
Su 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837