Python Forum

Full Version: Split a number to list and list sum must be number
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
How to split a number to list and list sum must be number

Example :

x = 8
i want to split and make a list with 3 items and the sum of list must be equal to x
y = [3, 3, 2]

Any help is appreciated
This smells like homework.
To start these kind of problems you must ask yourself: how should I do this by hand?
You would choose the first number. Then a second number and at last a third number and check if the sum equals "x". Then you would try all possibilities of the third number until you have a match. Or just calculate the third number.

You should also realize there must be limitations:
  • Is the number "0" allowed?
  • Are negative numbers allowed?
  • Do the numbers need to be integers?
  • Can a number be used more than once?
  • There may be more than one solution. How to handle that?

Please consider these thougts and try to make a script for it and let us know if you encounter problems.
(Apr-27-2022, 05:10 AM)sunny9495 Wrote: [ -> ]How to split a number to list and list sum must be number

Example :

x = 8
i want to split and make a list with 3 items and the sum of list must be equal to x
y = [3, 3, 2]

Any help is appreciated
You should consider what @ibreeden has said. I tried something out though. You might want to check it out and how it works:

for i in range(x):
	for j in range(x):
		for k in range(x):
			if i + j + k == x:
				print([i, j, k])
...where x=8
The last loop is superfluous. The first loop should range from zero to x+1. The middle loop starts at i and ends at x-i+1. And there will be duplicates that must be culled. Theres got to be a better approach.
(Apr-27-2022, 12:16 PM)Dexty Wrote: [ -> ]
(Apr-27-2022, 05:10 AM)sunny9495 Wrote: [ -> ]How to split a number to list and list sum must be number

Example :

x = 8
i want to split and make a list with 3 items and the sum of list must be equal to x
y = [3, 3, 2]

Any help is appreciated
You should consider what @ibreeden has said. I tried something out though. You might want to check it out and how it works:

for i in range(x):
	for j in range(x):
		for k in range(x):
			if i + j + k == x:
				print([i, j, k])
...where x=8

Hello,
for i in range(10):
	for j in range(10):
		for k in range(10):
			if i + j + k == 15:
				print(f"{i*100 + j*10 + k} ----> {i} + {j} + {k} =15")
import itertools
for i, j, k in itertools.product(range(10), range(10), range(10)):
        if i + j + k == 15:
                print(f"{i*100 + j*10 + k} ---->{i} + {j} + {k} =15")
(Apr-28-2022, 06:47 AM)Coricoco_fr Wrote: [ -> ]
(Apr-27-2022, 12:16 PM)Dexty Wrote: [ -> ]You should consider what @ibreeden has said. I tried something out though. You might want to check it out and how it works:

for i in range(x):
	for j in range(x):
		for k in range(x):
			if i + j + k == x:
				print([i, j, k])
...where x=8

Hello,
for i in range(10):
	for j in range(10):
		for k in range(10):
			if i + j + k == 15:
				print(f"{i*100 + j*10 + k} ----> {i} + {j} + {k} =15")
import itertools
for i, j, k in itertools.product(range(10), range(10), range(10)):
        if i + j + k == 15:
                print(f"{i*100 + j*10 + k} ---->{i} + {j} + {k} =15")

Hmm. Can hardly go wrong with itertools