Annettuna on lista, jossa on kokonaislukuja. Tehtäväsi on selvittää, voiko luvut jakaa kahteen listaan niin, että molemmissa listoissa lukujen summa on sama.
Esimerkiksi kun lista on , voidaan muodostaa jako listoihin ja , jossa kummankin listan lukujen summa on . Sen sijaan listassa missään jakotavassa listojen lukujen summa ei ole sama.
Toteuta tiedostoon samesum.py
funktio check_sum
, jolle annetaan lista luvuista. Funktion tulee palauttaa True
, jos jako on mahdollinen, ja muuten False
.
Voit olettaa, että lukujen määrä on välillä . Funktion tulee toimia tehokkaasti kaikissa tällaisissa tapauksissa.
def check_sum(numbers): # TODO if __name__ == "__main__": print(check_sum([1, 2, 3, 4])) # True print(check_sum([1, 2, 3, 5])) # False print(check_sum([0])) # True print(check_sum([2, 2])) # True print(check_sum([2, 4])) # False print(check_sum([1, 5, 6, 3, 5])) # True print(check_sum([1, 5, 5, 3, 5])) # False print(check_sum([10**9, 2*10**9, 10**9])) # True print(check_sum([1, 1, 1, 1, 1, 1, 1, 1, 1, 123])) # False