高校からの古い三角法のメモを掘り起こす時間です!課題は、異なる三角形の未知の側面と角度を解決することです。そして、コードゴルフの慣習であるように、最小の作業コードが勝ちます。
これは些細な問題ではありません。Pythonでの私の参照実装は現在838 837文字までですが、ゴルフソリューションをはるかに小さくできると確信しています。
さらに、行き詰まっている場合は、ウィキペディアのこのセクションで説明します:三角形:側面と角度の計算。
入力
次の三角形は、このチャレンジで使用される側面と角度の名前を示しています。側面は小文字で、角度は大文字であることに注意してください。
入力は、スペース上で区切られた6つの値stdin
として、コマンドライン引数(または選択)として与えられます。6つの値は、側面a, b, c
と角度に対応しますA, B, C
。不明な側面は疑問符(?
)で示されます。入力角度と出力角度はどちらもラジアン単位でなければなりません。入力値が正しいと仮定できます(何も検証する必要はありません)。また、入力三角形が非縮退であり、すべての辺と角度が非ゼロであると仮定することもできます。
次の入力例a
は8
、サイドb
が、サイドが12
、角度A
が0.5
ラジアンであることを示しています。
8 12 ? 0.5 ? ?
出力
出力は、入力と同じ形式で与えられます-スペースで区切られた6つの数字stdout
。唯一の例外は、入力三角形を解決でき"No solution"
ない場合ですstdout
。文字列を書き込む必要があります。2つの解決策が可能な場合、それらは両方とも改行で出力されます。
上記の入力の出力は次のとおりです。
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
出力の精度はそれほど高くなくてもかまいませんが、少なくとも小数点以下2桁が必要です。
ルール
- 入力は
stdin
コマンドライン引数から読み取られます - 出力はに書き込まれます
stdout
- 指定された入力で2つのソリューションが可能な場合、両方を出力します
- 情報が少なすぎて1つまたは2つの明確な解決策が得られない場合は、それを
"No solution"
事例と見なします - 組み込みまたは既存のコードは使用できません(もちろん、trig関数を使用できますが、「
solveTriangle
」などは使用できません) - 最短のコードが勝つ
テストケース
に 3 4 5 ? ? ?
でる 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
に ? 4 ? 0.64 0.92 1.57
でる 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
に ? ? 5 ? 0.92 ?
でる No solution
に ? ? 5 ? 0.92 1.57
でる 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
に 8 12 ? 0.5 ? ?
アウト(2つのソリューション)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
に 8 12 ? ? .5 ?
でる 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837