All possible ways to split a number
$begingroup$
I am trying to find a way to find (if it is possible) how many ways there are to split a number of n digits considering that the "splits" can occur everywhere and the subsets don't have to be the same length. So for example, if I have a 5 digits number "12345" I can split it into 16(?) ways:
1)12345
2)1-2-3-4-5
3)1-2345
4)12-345
5)123-45
6)1-23-45 etc.
So I am looking for all possible strategies to split the number. I am looking for both a formula and an algorithm. I am guessing that it is 2^(n-1) but I am not sure and I'd like to know why, if this is the case
combinatorics algorithms combinations
$endgroup$
add a comment |
$begingroup$
I am trying to find a way to find (if it is possible) how many ways there are to split a number of n digits considering that the "splits" can occur everywhere and the subsets don't have to be the same length. So for example, if I have a 5 digits number "12345" I can split it into 16(?) ways:
1)12345
2)1-2-3-4-5
3)1-2345
4)12-345
5)123-45
6)1-23-45 etc.
So I am looking for all possible strategies to split the number. I am looking for both a formula and an algorithm. I am guessing that it is 2^(n-1) but I am not sure and I'd like to know why, if this is the case
combinatorics algorithms combinations
$endgroup$
add a comment |
$begingroup$
I am trying to find a way to find (if it is possible) how many ways there are to split a number of n digits considering that the "splits" can occur everywhere and the subsets don't have to be the same length. So for example, if I have a 5 digits number "12345" I can split it into 16(?) ways:
1)12345
2)1-2-3-4-5
3)1-2345
4)12-345
5)123-45
6)1-23-45 etc.
So I am looking for all possible strategies to split the number. I am looking for both a formula and an algorithm. I am guessing that it is 2^(n-1) but I am not sure and I'd like to know why, if this is the case
combinatorics algorithms combinations
$endgroup$
I am trying to find a way to find (if it is possible) how many ways there are to split a number of n digits considering that the "splits" can occur everywhere and the subsets don't have to be the same length. So for example, if I have a 5 digits number "12345" I can split it into 16(?) ways:
1)12345
2)1-2-3-4-5
3)1-2345
4)12-345
5)123-45
6)1-23-45 etc.
So I am looking for all possible strategies to split the number. I am looking for both a formula and an algorithm. I am guessing that it is 2^(n-1) but I am not sure and I'd like to know why, if this is the case
combinatorics algorithms combinations
combinatorics algorithms combinations
asked Dec 8 '18 at 16:38
Craig MontevecchiCraig Montevecchi
447
447
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
Your problem can be solved using permutation with repetition in general.
Permutations with repetition
Ordered arrangements of the elements of a set S of length n where repetition is allowed are called n-tuples, but have sometimes been referred to as permutations with repetition although they are not permutations in general. They are also called words over the alphabet S in some contexts. If the set S has k elements, the number of n-tuples over S is:
The general formula is $ k^n $ where $k$ is the number of elements of S and $n$ the length of the tuple to form.
There is no restriction on how often an element can appear in an n-tuple, but if restrictions are placed on how often an element can appear, this formula is no longer valid.
In particular your problem to split 5 figures is equivalent to arrange 4 elements ($n=4$) from a set S of 2 elements ($k=2$) i.e.
${"-", "Nothing"}$
in order to get 4 tuples;
$("-/Nothing","-/Nothing","-/Nothing","-/Nothing")$ where slash $/$ means logical operator "or".
Therefore you will get the amount that you have inferred above which:
${2^{4}} = 16$
possible splits.
An algorithm in python 3.5 to solve this problem
import itertools
def getSplits(myciphers):
comb=
for split in [p for p in itertools.product([0,1], repeat=4)]:
tsplit=
tsplit.append(myciphers[0])
for c,s in zip(myciphers[1:],split):
if s == 1:
tsplit.append("-")
tsplit.append(c)
comb.append("".join(tsplit))
return comb
# Test Case 1
myciphers="12345"
print(getSplits(myciphers))
# Test Case 2
myciphers="ABCD"
print(getSplits(myciphers))
The output of this program is as follows:
rcolomina@workstation-rig:~$ python boo.py
['12345', '1234-5', '123-45', '123-4-5', '12-345', '12-34-5', '12-3-45', '12-3-4-5', '1-2345', '1-234-5', '1-23-45', '1-23-4-5', '1-2-345', '1-2-34-5', '1-2-3-45', '1-2-3-4-5']
['ABCD', 'ABCD', 'ABC-D', 'ABC-D', 'AB-CD', 'AB-CD', 'AB-C-D', 'AB-C-D', 'A-BCD', 'A-BCD', 'A-BC-D', 'A-BC-D', 'A-B-CD', 'A-B-CD', 'A-B-C-D', 'A-B-C-D']
$endgroup$
add a comment |
$begingroup$
When you have a sequence of $n$ numbers, you can $n-1$ slots to make cuts. So we need to know all the ways we can choose $0$ cuts out if it, then $1$ cut, $2$ cuts, etc
The total number of ways to choose the cuts is $$sum_{k=0}^{n-1} { {n-1}choose{k}} =2^{n-1} $$
To prove this equality, use a subtle trick: Set $2^{n-1} = (1+1)^{n-1}$ and use the Binomial Theorem.
$endgroup$
add a comment |
$begingroup$
Look at the cuts as a binary number where each digit i of the number indicates if we cut between digit i and i+1 in the real number.
for example:
12345 would be 0000.
12-345 would be 0100.
Now,for a number of size n our binary number would be of size n-1,how many unique values can a n-1 digits binary number represent?
$$2^{(n-1)}$$.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3031327%2fall-possible-ways-to-split-a-number%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Your problem can be solved using permutation with repetition in general.
Permutations with repetition
Ordered arrangements of the elements of a set S of length n where repetition is allowed are called n-tuples, but have sometimes been referred to as permutations with repetition although they are not permutations in general. They are also called words over the alphabet S in some contexts. If the set S has k elements, the number of n-tuples over S is:
The general formula is $ k^n $ where $k$ is the number of elements of S and $n$ the length of the tuple to form.
There is no restriction on how often an element can appear in an n-tuple, but if restrictions are placed on how often an element can appear, this formula is no longer valid.
In particular your problem to split 5 figures is equivalent to arrange 4 elements ($n=4$) from a set S of 2 elements ($k=2$) i.e.
${"-", "Nothing"}$
in order to get 4 tuples;
$("-/Nothing","-/Nothing","-/Nothing","-/Nothing")$ where slash $/$ means logical operator "or".
Therefore you will get the amount that you have inferred above which:
${2^{4}} = 16$
possible splits.
An algorithm in python 3.5 to solve this problem
import itertools
def getSplits(myciphers):
comb=
for split in [p for p in itertools.product([0,1], repeat=4)]:
tsplit=
tsplit.append(myciphers[0])
for c,s in zip(myciphers[1:],split):
if s == 1:
tsplit.append("-")
tsplit.append(c)
comb.append("".join(tsplit))
return comb
# Test Case 1
myciphers="12345"
print(getSplits(myciphers))
# Test Case 2
myciphers="ABCD"
print(getSplits(myciphers))
The output of this program is as follows:
rcolomina@workstation-rig:~$ python boo.py
['12345', '1234-5', '123-45', '123-4-5', '12-345', '12-34-5', '12-3-45', '12-3-4-5', '1-2345', '1-234-5', '1-23-45', '1-23-4-5', '1-2-345', '1-2-34-5', '1-2-3-45', '1-2-3-4-5']
['ABCD', 'ABCD', 'ABC-D', 'ABC-D', 'AB-CD', 'AB-CD', 'AB-C-D', 'AB-C-D', 'A-BCD', 'A-BCD', 'A-BC-D', 'A-BC-D', 'A-B-CD', 'A-B-CD', 'A-B-C-D', 'A-B-C-D']
$endgroup$
add a comment |
$begingroup$
Your problem can be solved using permutation with repetition in general.
Permutations with repetition
Ordered arrangements of the elements of a set S of length n where repetition is allowed are called n-tuples, but have sometimes been referred to as permutations with repetition although they are not permutations in general. They are also called words over the alphabet S in some contexts. If the set S has k elements, the number of n-tuples over S is:
The general formula is $ k^n $ where $k$ is the number of elements of S and $n$ the length of the tuple to form.
There is no restriction on how often an element can appear in an n-tuple, but if restrictions are placed on how often an element can appear, this formula is no longer valid.
In particular your problem to split 5 figures is equivalent to arrange 4 elements ($n=4$) from a set S of 2 elements ($k=2$) i.e.
${"-", "Nothing"}$
in order to get 4 tuples;
$("-/Nothing","-/Nothing","-/Nothing","-/Nothing")$ where slash $/$ means logical operator "or".
Therefore you will get the amount that you have inferred above which:
${2^{4}} = 16$
possible splits.
An algorithm in python 3.5 to solve this problem
import itertools
def getSplits(myciphers):
comb=
for split in [p for p in itertools.product([0,1], repeat=4)]:
tsplit=
tsplit.append(myciphers[0])
for c,s in zip(myciphers[1:],split):
if s == 1:
tsplit.append("-")
tsplit.append(c)
comb.append("".join(tsplit))
return comb
# Test Case 1
myciphers="12345"
print(getSplits(myciphers))
# Test Case 2
myciphers="ABCD"
print(getSplits(myciphers))
The output of this program is as follows:
rcolomina@workstation-rig:~$ python boo.py
['12345', '1234-5', '123-45', '123-4-5', '12-345', '12-34-5', '12-3-45', '12-3-4-5', '1-2345', '1-234-5', '1-23-45', '1-23-4-5', '1-2-345', '1-2-34-5', '1-2-3-45', '1-2-3-4-5']
['ABCD', 'ABCD', 'ABC-D', 'ABC-D', 'AB-CD', 'AB-CD', 'AB-C-D', 'AB-C-D', 'A-BCD', 'A-BCD', 'A-BC-D', 'A-BC-D', 'A-B-CD', 'A-B-CD', 'A-B-C-D', 'A-B-C-D']
$endgroup$
add a comment |
$begingroup$
Your problem can be solved using permutation with repetition in general.
Permutations with repetition
Ordered arrangements of the elements of a set S of length n where repetition is allowed are called n-tuples, but have sometimes been referred to as permutations with repetition although they are not permutations in general. They are also called words over the alphabet S in some contexts. If the set S has k elements, the number of n-tuples over S is:
The general formula is $ k^n $ where $k$ is the number of elements of S and $n$ the length of the tuple to form.
There is no restriction on how often an element can appear in an n-tuple, but if restrictions are placed on how often an element can appear, this formula is no longer valid.
In particular your problem to split 5 figures is equivalent to arrange 4 elements ($n=4$) from a set S of 2 elements ($k=2$) i.e.
${"-", "Nothing"}$
in order to get 4 tuples;
$("-/Nothing","-/Nothing","-/Nothing","-/Nothing")$ where slash $/$ means logical operator "or".
Therefore you will get the amount that you have inferred above which:
${2^{4}} = 16$
possible splits.
An algorithm in python 3.5 to solve this problem
import itertools
def getSplits(myciphers):
comb=
for split in [p for p in itertools.product([0,1], repeat=4)]:
tsplit=
tsplit.append(myciphers[0])
for c,s in zip(myciphers[1:],split):
if s == 1:
tsplit.append("-")
tsplit.append(c)
comb.append("".join(tsplit))
return comb
# Test Case 1
myciphers="12345"
print(getSplits(myciphers))
# Test Case 2
myciphers="ABCD"
print(getSplits(myciphers))
The output of this program is as follows:
rcolomina@workstation-rig:~$ python boo.py
['12345', '1234-5', '123-45', '123-4-5', '12-345', '12-34-5', '12-3-45', '12-3-4-5', '1-2345', '1-234-5', '1-23-45', '1-23-4-5', '1-2-345', '1-2-34-5', '1-2-3-45', '1-2-3-4-5']
['ABCD', 'ABCD', 'ABC-D', 'ABC-D', 'AB-CD', 'AB-CD', 'AB-C-D', 'AB-C-D', 'A-BCD', 'A-BCD', 'A-BC-D', 'A-BC-D', 'A-B-CD', 'A-B-CD', 'A-B-C-D', 'A-B-C-D']
$endgroup$
Your problem can be solved using permutation with repetition in general.
Permutations with repetition
Ordered arrangements of the elements of a set S of length n where repetition is allowed are called n-tuples, but have sometimes been referred to as permutations with repetition although they are not permutations in general. They are also called words over the alphabet S in some contexts. If the set S has k elements, the number of n-tuples over S is:
The general formula is $ k^n $ where $k$ is the number of elements of S and $n$ the length of the tuple to form.
There is no restriction on how often an element can appear in an n-tuple, but if restrictions are placed on how often an element can appear, this formula is no longer valid.
In particular your problem to split 5 figures is equivalent to arrange 4 elements ($n=4$) from a set S of 2 elements ($k=2$) i.e.
${"-", "Nothing"}$
in order to get 4 tuples;
$("-/Nothing","-/Nothing","-/Nothing","-/Nothing")$ where slash $/$ means logical operator "or".
Therefore you will get the amount that you have inferred above which:
${2^{4}} = 16$
possible splits.
An algorithm in python 3.5 to solve this problem
import itertools
def getSplits(myciphers):
comb=
for split in [p for p in itertools.product([0,1], repeat=4)]:
tsplit=
tsplit.append(myciphers[0])
for c,s in zip(myciphers[1:],split):
if s == 1:
tsplit.append("-")
tsplit.append(c)
comb.append("".join(tsplit))
return comb
# Test Case 1
myciphers="12345"
print(getSplits(myciphers))
# Test Case 2
myciphers="ABCD"
print(getSplits(myciphers))
The output of this program is as follows:
rcolomina@workstation-rig:~$ python boo.py
['12345', '1234-5', '123-45', '123-4-5', '12-345', '12-34-5', '12-3-45', '12-3-4-5', '1-2345', '1-234-5', '1-23-45', '1-23-4-5', '1-2-345', '1-2-34-5', '1-2-3-45', '1-2-3-4-5']
['ABCD', 'ABCD', 'ABC-D', 'ABC-D', 'AB-CD', 'AB-CD', 'AB-C-D', 'AB-C-D', 'A-BCD', 'A-BCD', 'A-BC-D', 'A-BC-D', 'A-B-CD', 'A-B-CD', 'A-B-C-D', 'A-B-C-D']
answered Dec 8 '18 at 17:32
Rubén ColominaRubén Colomina
436
436
add a comment |
add a comment |
$begingroup$
When you have a sequence of $n$ numbers, you can $n-1$ slots to make cuts. So we need to know all the ways we can choose $0$ cuts out if it, then $1$ cut, $2$ cuts, etc
The total number of ways to choose the cuts is $$sum_{k=0}^{n-1} { {n-1}choose{k}} =2^{n-1} $$
To prove this equality, use a subtle trick: Set $2^{n-1} = (1+1)^{n-1}$ and use the Binomial Theorem.
$endgroup$
add a comment |
$begingroup$
When you have a sequence of $n$ numbers, you can $n-1$ slots to make cuts. So we need to know all the ways we can choose $0$ cuts out if it, then $1$ cut, $2$ cuts, etc
The total number of ways to choose the cuts is $$sum_{k=0}^{n-1} { {n-1}choose{k}} =2^{n-1} $$
To prove this equality, use a subtle trick: Set $2^{n-1} = (1+1)^{n-1}$ and use the Binomial Theorem.
$endgroup$
add a comment |
$begingroup$
When you have a sequence of $n$ numbers, you can $n-1$ slots to make cuts. So we need to know all the ways we can choose $0$ cuts out if it, then $1$ cut, $2$ cuts, etc
The total number of ways to choose the cuts is $$sum_{k=0}^{n-1} { {n-1}choose{k}} =2^{n-1} $$
To prove this equality, use a subtle trick: Set $2^{n-1} = (1+1)^{n-1}$ and use the Binomial Theorem.
$endgroup$
When you have a sequence of $n$ numbers, you can $n-1$ slots to make cuts. So we need to know all the ways we can choose $0$ cuts out if it, then $1$ cut, $2$ cuts, etc
The total number of ways to choose the cuts is $$sum_{k=0}^{n-1} { {n-1}choose{k}} =2^{n-1} $$
To prove this equality, use a subtle trick: Set $2^{n-1} = (1+1)^{n-1}$ and use the Binomial Theorem.
answered Dec 8 '18 at 17:05
WaveXWaveX
2,5822722
2,5822722
add a comment |
add a comment |
$begingroup$
Look at the cuts as a binary number where each digit i of the number indicates if we cut between digit i and i+1 in the real number.
for example:
12345 would be 0000.
12-345 would be 0100.
Now,for a number of size n our binary number would be of size n-1,how many unique values can a n-1 digits binary number represent?
$$2^{(n-1)}$$.
$endgroup$
add a comment |
$begingroup$
Look at the cuts as a binary number where each digit i of the number indicates if we cut between digit i and i+1 in the real number.
for example:
12345 would be 0000.
12-345 would be 0100.
Now,for a number of size n our binary number would be of size n-1,how many unique values can a n-1 digits binary number represent?
$$2^{(n-1)}$$.
$endgroup$
add a comment |
$begingroup$
Look at the cuts as a binary number where each digit i of the number indicates if we cut between digit i and i+1 in the real number.
for example:
12345 would be 0000.
12-345 would be 0100.
Now,for a number of size n our binary number would be of size n-1,how many unique values can a n-1 digits binary number represent?
$$2^{(n-1)}$$.
$endgroup$
Look at the cuts as a binary number where each digit i of the number indicates if we cut between digit i and i+1 in the real number.
for example:
12345 would be 0000.
12-345 would be 0100.
Now,for a number of size n our binary number would be of size n-1,how many unique values can a n-1 digits binary number represent?
$$2^{(n-1)}$$.
answered Dec 8 '18 at 17:03
AdddisonAdddison
846
846
add a comment |
add a comment |
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3031327%2fall-possible-ways-to-split-a-number%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown