与朋友共享披萨的困难在于,很难确保每个人都得到相同数量的意大利辣香肠。因此,您的任务是决定如何公平地切片披萨,以便每个人都开心。
方向
编写一个程序,给定圆形比萨饼上意大利辣味香肠的位置列表和要制作的切片数量,输出一个程序,将比萨饼切成的角度列表,以使每个切片上的比萨饼数量相同它。
- 披萨只有一个馅料:意大利辣香肠。
- 您的朋友不在乎切片的大小,只是他们没有从任何意大利辣香肠中被骗。
- 比萨饼是一个以原点为中心的圆
(0, 0)
,半径为1
。 - 意大利辣香肠是圆心,只要输入内容表明它们居中且半径为
0.1
- 将输入作为代表要制作的切片数量的整数,以及代表意大利辣香肠在直角坐标系上的位置的有序对列表。(以任何合理的格式)
- 输出应该是一个以弧度表示的角度列表,该角度表示比萨的“切口”的位置(在范围内
0 <= a < 2pi
)。(以任何合理的格式)(精度至少应为+/- 1e-5
。) - 您可以在切片上放上一部分意大利辣香肠(例如,如果一个比萨饼上有一个意大利辣香肠,并且需要由10个人共享,则将比萨切成10次,全部切成薄片切成意大利辣香肠。但是要确保它是公平的) !)
- 切成薄片(可能必须)切成多个意大利辣味香肠。
- 意大利辣味香肠可能会重叠。
例子
输入:
8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32)
可能的有效输出:
slices at:
0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554
这是此示例的可视化(每个人都可以得到一半的意大利辣香肠):
更多示例:
Input: 9 people, 1 pepperoni at: (0.03, 0.01)
Output: 0, 0.4065, 0.8222, 1.29988, 1.94749, 3.03869, 4.42503, 5.28428, 5.83985
Input: 5, (0.4, 0.3), (0.45, 0.43), (-0.5, -0.04)
Output: 0, 0.64751, 0.73928, 0.84206, 3.18997
计分
这是code-golf,因此最少要赢得字节数。
必须坚持多大的精确度才能将提交视为有效?
—
Rainbolt 2014年
@Rainbolt我想说4或5个小数位就足够了。你有什么建议?我应该将其添加到问题中。
—
kukac67 2014年
我不确定每个问题是否都可以解决。如果均匀间隔7片和3个意大利辣香肠怎么办?
—
弥敦道·美林
@NathanMerrill然后每个人都会得到3/7的意大利辣香肠。:)(切片的大小无关紧要。)
—
kukac67
披萨帽尝试失败。下次再问一个简单的问题。;)
—
Ilmari Karonen 2014年