En orta derecede başarılı bir futbol BE takımının hayranı olarak , sezonun sonuna doğru sık sık favori takımımın hala şampiyon olmak için herhangi bir teorik şansı olup olmadığını merak ediyorum. Bu görevdeki göreviniz bu soruyu benim için cevaplamak.
Giriş
Üç giriş alacaksınız: mevcut tablo, kalan maçlar listesi ve ilgilendiğimiz takımın mevcut konumu.
Giriş 1: Geçerli tablo , bir sayı dizisidir vardı ı -inci sayı ekibi tarafından kazanılan noktalardır i şimdiye kadar. Örneğin, girdi
[93, 86, 78, 76, 75]
aşağıdaki tabloyu kodlar (yalnızca son sütun önemlidir):
Giriş 2 : Kalan maçlar , her bir grubun ( i , j ) takım i ve j arasında kalan bir eşleşmeyi temsil ettiği bir dizi tuple . Yukarıdaki örnekte, ifadesinin ikinci girişi [(1,2), (4,3), (2,3), (3,2), (1,2)]
, kalan eşleşmelerin şu şekilde olacağı anlamına gelir:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Giriş 3: geçerli konum . Biz de ilgilendi takımın Örneğin, bir giriş 2
Yukarıdaki örneğin biz Tottenham hala şampiyonu olmak alamayacağını bilmek istediğiniz anlamına gelir.
Çıktı
Formun ( i , j ) kalan her bir eşleşmesi için üç olası sonuç vardır:
- Takım i kazanır: Takım i 3 puan alır , takım j 0 puan alır
- Takım j kazanır: Takım i 0 puan alır , takım j 3 puan alır
- Beraberlik: Takım i ve j'nin ikisi de 1 puan alır
Kalan tüm oyunlar için bir sonuç varsa, sonuçta başka hiçbir takımın 3. girişte belirtilen takımdan daha fazla puanı olmayacak şekilde doğru bir değer çıkarmalısınız. Aksi takdirde, yanlış bir değer verin.
Örnek : Yukarıdaki bölümden örnek girişi düşünün:
Giriş 1 = [93, 86, 78, 76, 75]
, Giriş 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)]
, Giriş 3 =2
Takım 2
kalan tüm maçları kazanırsa (yani (1,2), (2,3), (3,2), (1,2)
), 4 * 3 = 12 ek puan alır; diğer takımların hiçbiri bu maçlardan puan alamaz. Diyelim ki diğer kalan maç (yani (4,3)
) berabere kaldı. Son puanlar şöyle olur:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Bu, diğer maçlarda takımdan daha fazla puan olmayacak şekilde kalan maçlar için bazı sonuçlar bulduğumuz anlamına gelir 2
, bu nedenle bu girdinin çıktısı doğru olmalıdır.
ayrıntılar
- Eğer bir sıralı sekans, yani hem ilk giriş alabilmektedir i < j , i -inci girişi eşit ya da bundan daha büyük olan j -inci girdi. İlk girdi bir liste, bir dize veya benzeri olarak alınabilir.
- İkinci girdiyi dize, tuples listesi veya benzeri olarak alabilirsiniz. Alternatif olarak, bir iki boyutlu bir dizi olarak alabilir formun girişlerin sayısıdır kalan maçların listesinde. Örneğin,
karşılık gelir .
a
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)]
- İkinci ve üçüncü girdi için, 1 dizinleme yerine 0 dizinleme olduğunu varsayabilirsiniz.
- Üç girişi istediğiniz sırayla alabilirsiniz.
Lütfen cevabınızda seçtiğiniz tam giriş formatını belirtin.
Yan düğüm : Bu zorluğun altında yatan sorunun " Futbol Eliminasyonunun 3 Nokta Kuralı Altında Karar Verilmesi Zor " bölümünde NP-tam olduğu gösterilmiştir . İlginç bir şekilde, bir galibiyet için sadece iki puan verilirse, sorun polinom zamanında çözülebilir hale gelir.
Test Durumları
Tüm test durumları biçimindedir Input1
, Input2
, Input3
.
Doğru:
[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
Falsy:
[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
kazanan
Bu kod golf , bu yüzden en kısa doğru cevap (bayt cinsinden) kazanır. Kazanan ilk doğru cevap gönderildikten bir hafta sonra seçilecektir.