是时候从高中挖掘旧的三角学笔记了!挑战在于解决不同三角形的未知边和角度。按照编码高尔夫的惯例,最小的有效编码将获胜。
这不是一个小问题。我在python中的参考实现目前只有838 837个字符,但是我敢肯定,您将可以使用更小的解决方案。
此外,如果您受困,那么Wikipedia上的这一部分将使您着手进行:Triangle:计算边和角。
输入值
下面的三角形显示了此挑战中使用的边和角度的名称。请注意,侧面是小写字母,而角度是大写字母。
输入以六个空格分隔的值形式给出,可以是在stdin
命令行参数上,也可以是命令行参数(您的选择)。这六个值分别对应于侧面a, b, c
和角度A, B, C
。未知的一面以问号(?
)给出。输入和输出角度都必须以弧度为单位。您可以假设输入值正确(您无需验证任何内容)。您还可以假设输入三角形不退化,并且所有边和角度都不为零。
以下示例输入告诉您side a
为8
,side b
为,12
而angle A
为0.5
弧度:
8 12 ? 0.5 ? ?
输出量
输出以与输入相同的格式给出-上用六个空格分隔的数字stdout
。唯一的例外是,当无法求解输入三角形时,"No solution"
必须将字符串写入stdout
。如果可能有两种解决方案,则它们都将以换行符的形式输出。
以下是上述输入的输出:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
输出不需要具有很高的精度,但是至少需要几个小数。
规则
- 输入是
stdin
从命令行参数中读取的 - 输出写入
stdout
- 如果给定输入有两种解决方案,则输出两者
- 如果信息太少而无法获得一两个清晰的解决方案,请考虑使用这种
"No solution"
情况 - 不能使用内置或预先存在的代码(当然,您可以使用触发函数,但不能使用“
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 ? ?
出(两种解决方案)
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