最大で中程度に成功するフットボールBEチームのファンとして、シーズンの終わりに向けて、私のお気に入りのチームがまだチャンピオンになる可能性があるかどうか疑問に思います。この課題におけるあなたの仕事は、私のためにその質問に答えることです。
入力
現在のテーブル、残りの対戦のリスト、関心のあるチームの現在のポジションの3つの入力を受け取ります。
入力1:現在のテーブル、数字のシーケンスがされた私番目の数は、チームによって得られるポイントです私はこれまで。たとえば、入力
[93, 86, 78, 76, 75]
は次の表をエンコードします(最後の列のみが重要です)。
入力2:残りの一致。各タプル(i、j)がチームiとjの間の残りの一致を表すタプルのシーケンス。上記の例では、2番目の入力は[(1,2), (4,3), (2,3), (3,2), (1,2)]
、残りの一致が次のとおりであることを意味します。
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
入力3:関心のあるチームの現在の位置。たとえば2
、上記の例のの入力は、トッテナムがまだチャンピオンになることができるかどうかを知りたいことを意味します。
出力
フォームの残りの一致ごとに( i、j)のに、3つの結果が考えられます。
- チームiが勝利:チームiが獲得 3ポイント、チームjが0ポイント
- チームjが勝利:チームiが獲得 0ポイント、チームjは3ポイントを獲得
- 抽選:チームiとjの両方が1ポイントを獲得
残りのすべてのゲームに結果があり、最後に3番目の入力で指定されたチームよりも多くのポイントが他のチームにない場合は、真の値を出力する必要があります。それ以外の場合は、偽の値を出力します。
例:上記のセクションからの例示的な入力を考えます。
入力1 = [93, 86, 78, 76, 75]
、入力2 = [(1,2), (4,3), (2,3), (3,2), (1,2)]
、入力3 =2
チーム2
が残りのすべての試合に勝利した場合(つまり(1,2), (2,3), (3,2), (1,2)
)、4 * 3 = 12ポイントが追加されます。他のチームはこれらの試合からポイントを獲得しません。他の残りのマッチ(つまり(4,3)
)が引き分けであるとしましょう。最終的なスコアは次のようになります。
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
これは、他のチームがteamよりも多くのポイントを持たないように、残りの試合の結果をすでに発見している2
ため、この入力の出力は真実である必要があることを意味します。
細部
- 最初の入力は順序付けられたシーケンスであると想定できます。つまり、i < jの場合、i番目のエントリはj番目のエントリ以上です。最初の入力は、リスト、文字列などとすることができます。
- 2番目の入力は、文字列、タプルのリストなどとして受け取ることができます。あるいは、残りの一致のリストにあるフォームのエントリ数が
a
である2次元配列と見なすこともできa[i][j]
ます(i,j)
。たとえば、にa[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1
対応し[(1,2), (4,3), (2,3), (3,2), (1,2)]
ます。 - 2番目と3番目の入力については、1インデックスではなく0インデックスを想定できます。
- 3つの入力は任意の順序で取得できます。
回答で選択した正確な入力形式を指定してください。
サイドノード:この課題の根底にある問題は、「3点ルールではフットボールの排除を決定するのは難しい」でNP完全であることが示されました。興味深いことに、勝つために2ポイントしか与えられない場合、問題は多項式時間で解決可能になります。
テストケース
すべてのテストケースは形式ですInput1
、Input2
、Input3
。
真実:
[93, 86, 78, 76, 75]
、[(1,2), (4,3), (2,3), (3,2), (1,2)]
、2
[50]
、[]
、1
[10, 10, 10]
、[]
、3
[15, 10, 8]
、[(2,3), (1,3), (1,3), (3,1), (2,1)]
、2
偽物:
[10, 9, 8]
、[]
、2
[10, 9, 9]
、[(2,3), (3,2)]
、1
[21, 12, 11]
、[(2,1), (1,2), (2,3), (1,3), (1,3), (3,1), (3,1)]
、2
勝者
これはcode-golfなので、最も短い正解(バイト単位)が優先されます。勝者は、最初の正解が投稿されてから1週間後に選ばれます。