友人とピザを共有することの難しさは、スライスで全員が同じ量のペパロニを確実に摂取できるようにするのが難しいことです。だから、あなたの仕事は、みんなが幸せになるようにピザをどのように公正にスライスするかを決めることです。
行き方
円形ピザのペパロニの位置と作成するスライスの数のリストを指定して、各スライスが同じ量のペパロニになるようにピザをカットする角度のリストを出力するプログラムを作成しますそれ。
- ピザのトッピングはペパロニのみです。
- お友達は、ペパロニからだまされないというだけで、スライスのサイズを気にしません。
- ピザは、原点
(0, 0)を中心とし、半径が1の円です。 - ペパロニは、入力が中央にあり、半径が
0.1 - 入力を、作成するスライスの数を表す整数、およびデカルト座標系でのペパロニの位置を表す順序ペアのリストとして受け取ります。(合理的な形式で)
- 出力は、ピザの「カット」の位置を表すラジアン単位の角度のリストである必要があります(範囲内
0 <= a < 2pi)。(合理的な形式で)(精度は少なくともでなければなりません+/- 1e-5。) - スライスにペパロニの部分的な部分を置くことができます(例えば、ピザにペパロニが1つあり、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なので、最小バイト数が勝ちます。
提出物を有効とみなすためには、どの程度の精度が必要ですか
—
レインボルト14
@Rainbolt小数点以下4桁または5桁で十分だと思います。何を指示してるんですか?質問に追加する必要があります。
—
kukac67 14
すべての問題が解決できるかどうかはわかりません。7つのスライスと3つのペパロニが等間隔に配置されている場合はどうなりますか?
—
ネイサンメリル14
@NathanMerrillそうすると、誰もが3/7のペパロニを手に入れることになります。:)(スライスのサイズは関係ありません。)
—
kukac67 14
ピザハットの試みは失敗しました。次回は簡単に聞いてください。;)
—
イルマリカロネン14