Wrote a quick script in Python to find all of the possible solutions:
(21, 64, 126, 373, 416)
and
(64, 66, 126, 328, 416)
EDIT: only (21, 64, 126, 373, 416) because I misread/mistyped 382 as 328 in my code. Thanks for spotting that @minus-pi
Not my best code, but if you are curious, here it is
import itertools
numbers = [373,135,30,375,126,411,416,64,73,382,66,128,418,21,23,425]
def hasDuplicate(list):
existingNums = []
for num in list:
if num in existingNums:
return True
else:
existing_nums.append(num)
return False
ways = []
for choice in itertools.product(numbers, repeat=5):
if sum(choice) == 1000:
if not hasDuplicate(choice):
if sorted(choice) not in ways:
print(sorted(choice))
ways.append(sorted(choice))
hehe, I think you made a similar copy&paste mistake than me :D
328 should be 382
You can use
random.sample
then you don't need to check for duplicates:from random import sample nums = [373, 135, 30, 375, 126, 411, 416, 64, 73, 382, 66, 128, 418, 21, 23, 425] sel = [] while sum(sel) != 1000: sel = sample(nums, 5) print(sorted(sel))
Ah whoops fixed that now. Thank you for letting me know. I tend to mistype and misread numbers a lot, so I'm not super surprised I messed that up :)
I could have done it using random samples, but I had assumed there might be multiple solutions, so I wanted to iterate over all possible ones instead. That solution does work too.
Also, I looked back at itertools's documentation and realized I missed that there is a
itertools.combinations
function I missed that would work as well and make the code I had simpler.