Sinulla on korttipelissä kädessä tietyt kortit ja sinun tulisi löytää korttien yhdistelmä, jonka summa on haluttu. Montako tällaista yhdistelmää korteista voi muodostaa?
Tässä tehtävässä kortit esitetään lukujen listana. Esimerkiksi lista tarkoittaa, että kädessä on neljä korttia, joiden arvot ovat , , ja . Korttien mailla (esim. risti) ei ole merkitystä tehtävässä.
Esimerkiksi kun kortit ovat ja haluttu summa on , tällainen yhdistelmä voidaan muodostaa kahdella tavalla. Yksi tapa on valita kortit ja , ja toinen tapa on valita pelkkä kortti .
Toteuta tiedostoon cardgame.py
funktio count_combinations
, jolle annetaan parametrina korttien arvot listana ja haluttu summa. Funktion tulee palauttaa yhdistelmien määrä.
Voit olettaa, että korttien määrä on välillä . Funktion tulee toimia tehokkaasti kaikissa tällaisissa tapauksissa.
def count_combinations(cards, target): # TODO if __name__ == "__main__": print(count_combinations([2, 1, 4, 6], 6)) # 2 print(count_combinations([1, 1, 1, 1], 2)) # 6 print(count_combinations([2, 1, 4, 6], 15)) # 0 print(count_combinations([1], 1)) # 1 print(count_combinations([1, 2, 3, 4, 5], 5)) # 3 print(count_combinations([1, 1, 4, 1, 1], 4)) # 2 print(count_combinations([1] * 10, 5)) # 252