CSES - Korttipeli

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 [2,1,4,6][2,1,4,6] tarkoittaa, että kädessä on neljä korttia, joiden arvot ovat 22, 11, 44 ja 66. Korttien mailla (esim. risti) ei ole merkitystä tehtävässä.

Esimerkiksi kun kortit ovat [2,1,4,6][2,1,4,6] ja haluttu summa on 66, tällainen yhdistelmä voidaan muodostaa kahdella tavalla. Yksi tapa on valita kortit 22 ja 44, ja toinen tapa on valita pelkkä kortti 66.

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ä 1101 \dots 10. 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