List *all* the tuples! Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The PPCG Site design is on its way - help us make it awesome! Sandbox for Proposed ChallengesOutput a list of all rational numbersMoore IterationNaturally linear Diophantine equationsCo-primality and the number piRotate every row and column in a matrixConvert header levels to numbersASCII DandelionsPrint all decimalsParse a list of lists into a Sad-List2D Array Middle Point
Is there a concise way to say "all of the X, one of each"?
Antler Helmet: Can it work?
Does surprise arrest existing movement?
Check which numbers satisfy the condition [A*B*C = A! + B! + C!]
How do I keep my slimes from escaping their pens?
Letter Boxed validator
What would be the ideal power source for a cybernetic eye?
Why does Python start at index 1 when iterating an array backwards?
Should gear shift center itself while in neutral?
What does the "x" in "x86" represent?
Is it true that "carbohydrates are of no use for the basal metabolic need"?
When to stop saving and start investing?
What do you call a plan that's an alternative plan in case your initial plan fails?
What are 'alternative tunings' of a guitar and why would you use them? Doesn't it make it more difficult to play?
Withdrew £2800, but only £2000 shows as withdrawn on online banking; what are my obligations?
Do you forfeit tax refunds/credits if you aren't required to and don't file by April 15?
Marking the functions of a sentence: 'She may like it'
Why is black pepper both grey and black?
What is this single-engine low-wing propeller plane?
ListPlot join points by nearest neighbor rather than order
Why was the term "discrete" used in discrete logarithm?
How to motivate offshore teams and trust them to deliver?
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
Did Xerox really develop the first LAN?
List *all* the tuples!
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The PPCG Site design is on its way - help us make it awesome!
Sandbox for Proposed ChallengesOutput a list of all rational numbersMoore IterationNaturally linear Diophantine equationsCo-primality and the number piRotate every row and column in a matrixConvert header levels to numbersASCII DandelionsPrint all decimalsParse a list of lists into a Sad-List2D Array Middle Point
$begingroup$
Write a program, given an input n, will generate all possible n-tuples using natural numbers.
n=1
(1),(2),(3),(4),(5),(6)...
n=2
(1,1),(1,2),(2,1),(2,2),(1,3),(3,1),(2,3),(3,2),(3,3)...
n=6
(1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1)...
- The output may be in any order that does not break any other rules.
- The program must be written to run forever and list all applicable tuples exactly once, in theory.
- In reality, your program will reach your integer type's limit and crash. This is acceptable as long the program would run infinitely long if only your integer type was unlimited.
- Each valid tuple must be listed within finite time, if only the program were allowed to run that long.
- The output may, at your option, include zeroes in addition to the natural numbers.
- You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)
- Code-golf rules apply, shortest program wins.
Thanks to "Artemis Fowl" for feedback during the sandbox phase.
code-golf sequence
$endgroup$
|
show 7 more comments
$begingroup$
Write a program, given an input n, will generate all possible n-tuples using natural numbers.
n=1
(1),(2),(3),(4),(5),(6)...
n=2
(1,1),(1,2),(2,1),(2,2),(1,3),(3,1),(2,3),(3,2),(3,3)...
n=6
(1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1)...
- The output may be in any order that does not break any other rules.
- The program must be written to run forever and list all applicable tuples exactly once, in theory.
- In reality, your program will reach your integer type's limit and crash. This is acceptable as long the program would run infinitely long if only your integer type was unlimited.
- Each valid tuple must be listed within finite time, if only the program were allowed to run that long.
- The output may, at your option, include zeroes in addition to the natural numbers.
- You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)
- Code-golf rules apply, shortest program wins.
Thanks to "Artemis Fowl" for feedback during the sandbox phase.
code-golf sequence
$endgroup$
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
1
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
1
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
3
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago
|
show 7 more comments
$begingroup$
Write a program, given an input n, will generate all possible n-tuples using natural numbers.
n=1
(1),(2),(3),(4),(5),(6)...
n=2
(1,1),(1,2),(2,1),(2,2),(1,3),(3,1),(2,3),(3,2),(3,3)...
n=6
(1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1)...
- The output may be in any order that does not break any other rules.
- The program must be written to run forever and list all applicable tuples exactly once, in theory.
- In reality, your program will reach your integer type's limit and crash. This is acceptable as long the program would run infinitely long if only your integer type was unlimited.
- Each valid tuple must be listed within finite time, if only the program were allowed to run that long.
- The output may, at your option, include zeroes in addition to the natural numbers.
- You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)
- Code-golf rules apply, shortest program wins.
Thanks to "Artemis Fowl" for feedback during the sandbox phase.
code-golf sequence
$endgroup$
Write a program, given an input n, will generate all possible n-tuples using natural numbers.
n=1
(1),(2),(3),(4),(5),(6)...
n=2
(1,1),(1,2),(2,1),(2,2),(1,3),(3,1),(2,3),(3,2),(3,3)...
n=6
(1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1)...
- The output may be in any order that does not break any other rules.
- The program must be written to run forever and list all applicable tuples exactly once, in theory.
- In reality, your program will reach your integer type's limit and crash. This is acceptable as long the program would run infinitely long if only your integer type was unlimited.
- Each valid tuple must be listed within finite time, if only the program were allowed to run that long.
- The output may, at your option, include zeroes in addition to the natural numbers.
- You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)
- Code-golf rules apply, shortest program wins.
Thanks to "Artemis Fowl" for feedback during the sandbox phase.
code-golf sequence
code-golf sequence
edited 7 hours ago
billpg
asked 7 hours ago
billpgbillpg
9601929
9601929
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
1
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
1
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
3
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago
|
show 7 more comments
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
1
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
1
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
3
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
1
1
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
1
1
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
3
3
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago
|
show 7 more comments
12 Answers
12
active
oldest
votes
$begingroup$
Haskell, 62 bytes
([1..]>>=).(!)
0!s=[[]|s<1]
n!s=[a:p|a<-[1..s],p<-(n-1)!(s-a)]
Try it online!
n!s generates all the n-tuples that sum to s.
Then the answer is ([1..]>>=).(!), i.e. n -> [t | s<-[1..], t<-n!s].
This is a function mapping an integer n to an infinite lazy list of tuples (lists of integers).
$endgroup$
add a comment |
$begingroup$
Perl 6, 37 bytes
$++.polymod(1+$++ xx $_-1).say xx *
Try it online!
Essentially runs polymod with as many entries as needed, where the modulo is always greater than the input, i.e. 0.polymod( 1,1,1 ), 1.polymod( 2,2,2 ) etc. That way the digit is always within the range. Perl6 won't let me modulo infinity...
$endgroup$
1
$begingroup$
This doesn't list every tuple exactly once (for instance,(0, 1, 0, 0)is not listed).
$endgroup$
– bb94
1 hour ago
add a comment |
$begingroup$
Husk, 2 bytes
πN
Try it online!
Explanation
N is the infinite list of natural numbers [1,2,3,4,...π is Cartesian power.
Result is an infinite list of lists.
Each list of the desired length occurs exactly once because π is cool like that.
Input and output are implicit.
$endgroup$
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
add a comment |
$begingroup$
Brachylog (v2), 9 bytes
~l.ℕᵐ+≜∧≜
Try it online!
This is an infinite generator that generates all possible tuples. The TIO link has a header that uses the generator to generate 1000 elements and prints them (but the generator could continue indefinitely if I asked for that instead; Brachylog's integers are unbounded).
It feels like there should be a terser way, but there are a lot of constraints and this is the tersest I can fit them into a single program.
Explanation
~l.ℕᵐ+≜∧≜
. Generate
≜ all explicit
~l lists whose length is the input
ᵐ for which every element
ℕ is non-negative
+ and whose sum
≜ is used to order the lists (closest to zero first)
∧ [remove unwanted implicit constraint]
Incidentally, it strikes me as interesting just how different my explanations of the two ≜ are, despite them doing the exact same thing from Brachylog's point of view. The first ≜ is the first nondeterministic predicate in the program, so it sets the order of results; in this case, it calculates all possible explicit values for the sum of the list in the order 0, 1, 2, 3…, and is being used to ensure that the lists are output in order of their sum (this ensures that each possible list appears after a finite amount of output). The second ≜ is used to calculate all the explicit possibilities for the list (rather than outputting a formula specifying how the elements of the list relate to each other).
$endgroup$
$begingroup$
↰₁ẉ⊥is also a good header, for printing infinitely.
$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by theᶠor the⊥in the header.
$endgroup$
– Unrelated String
29 mins ago
add a comment |
$begingroup$
Pyth - 10 bytes
Loops through all x, and takes [1..x]^n. This makes duplicates, so only keeps ones that are new to that x, aka contain x in them. The formatting is a little weird, but it can be made standard with one more byte, .V1jf}bT^Sb
.V1f}bT^Sb
Try it online.
$endgroup$
add a comment |
$begingroup$
Jelly, 10 (9?) bytes
9 if we may output using non-consistent separation (which I have enquired about) -- removal of the €.
‘ɼṗ³ċƇ®Ṅ€ß
Try it online!
How?
‘ɼṗ³ċƇ®Ṅ€ß - Main Link: some argument, x (initially equal to n, but unused)
ɼ - recall v from the register (initially 0), then set register to, and yield, f(v)
‘ - f = increment
- (i.e. v=v+1)
³ - program's third command line argument (1st program argument) = n
ṗ - (implicit range of [1..v]) Cartesian power (n)
- (i.e. all tuples of length n with items in [1..v])
Ƈ - filter keep those for which:
ċ - count
® - recall from register
- (i.e. keep only those containing v)
Ṅ€ - print €ach
ß - call this Link with the same arity
- (i.e. call Main(theFilteredList), again the argument is not actually used)
$endgroup$
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the€is required, but let's wait what OP has to say.
$endgroup$
– Kevin Cruijssen
2 hours ago
add a comment |
$begingroup$
05AB1E, 15 11 bytes
[¼¾LIãvy¾å—
-4 bytes by creating a port of @Maltysen's Pyth answer.
Try it online.
Explanation:
[ # Start an infinite loop:
¼ # Increase the counter_variable by 1 (0 by default)
¾L # Create a list in the range [1, counter_variable]
Iã # Take the cartesian power of this list with the input
v # Loop over each list `y` in this list of lists:
y¾å # If list `y` contains the counter_variable:
— # Print list `y` with trailing newline
$endgroup$
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
add a comment |
$begingroup$
VDM-SL, 51 bytes
g(i)==if i=0thenelse[x]^y
Recursive set comprehension with sequence concatenation..
Not on TIO, you could run in a program (if you turn on limits for nat type or it wont terminate):
functions
g:nat->set of ?
g(i)==if i=0thenelse[x]^y
Includes the optional 0s in answer otherwise it would be 52 bytes binding on nat1
$endgroup$
add a comment |
$begingroup$
Wolfram Language (Mathematica), 131 bytes
While[0<1,If[a~FreeQ~#,Print@#]&/@(b=Table[Select[Range@t~Tuples~s,Tr@#==k&],k,t,t(s=#)]~Flatten~1);a=a~Join~b;t++]&
t=1
a=
Try it online!
$endgroup$
add a comment |
$begingroup$
Python3 (56 characters)
This runs, but never outputs/returns any values, because the permutations function keeps pulling numbers from count. But in theory, this would return the requested permutations.
from itertools import*
lambda n:permutations(count(1),n)
Proof that this works for limited integer range:
from itertools import*
l = lambda n: permutations(range(1, 10), n)
print(list(l(3))) # returns all permutations of (1, 2, 3, ..., 10) of length 3
$endgroup$
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
add a comment |
$begingroup$
MATL, 16 bytes
`@:GZ^t!Xs@=Y)DT
Tuples are ordered by increasing sum, and within a given sum they are ordered lexicographically.
Try it online!
$endgroup$
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
add a comment |
$begingroup$
Python 2, 126 119 bytes
n=input()
m=i=0;p=2**~-n
while 1:
b=map(len,bin(i+p)[3:].split('0'));i+=1
if len(b)==n:print b
if i==p:i=0;m+=1;p*=2
Try it online!
Construct the ordered partitions of m into n bins, for m = 0,1,2,3,... by selecting for binary numbers with n 0s and m 1s.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "200"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
,
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%2fcodegolf.stackexchange.com%2fquestions%2f183225%2flist-all-the-tuples%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
12 Answers
12
active
oldest
votes
12 Answers
12
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Haskell, 62 bytes
([1..]>>=).(!)
0!s=[[]|s<1]
n!s=[a:p|a<-[1..s],p<-(n-1)!(s-a)]
Try it online!
n!s generates all the n-tuples that sum to s.
Then the answer is ([1..]>>=).(!), i.e. n -> [t | s<-[1..], t<-n!s].
This is a function mapping an integer n to an infinite lazy list of tuples (lists of integers).
$endgroup$
add a comment |
$begingroup$
Haskell, 62 bytes
([1..]>>=).(!)
0!s=[[]|s<1]
n!s=[a:p|a<-[1..s],p<-(n-1)!(s-a)]
Try it online!
n!s generates all the n-tuples that sum to s.
Then the answer is ([1..]>>=).(!), i.e. n -> [t | s<-[1..], t<-n!s].
This is a function mapping an integer n to an infinite lazy list of tuples (lists of integers).
$endgroup$
add a comment |
$begingroup$
Haskell, 62 bytes
([1..]>>=).(!)
0!s=[[]|s<1]
n!s=[a:p|a<-[1..s],p<-(n-1)!(s-a)]
Try it online!
n!s generates all the n-tuples that sum to s.
Then the answer is ([1..]>>=).(!), i.e. n -> [t | s<-[1..], t<-n!s].
This is a function mapping an integer n to an infinite lazy list of tuples (lists of integers).
$endgroup$
Haskell, 62 bytes
([1..]>>=).(!)
0!s=[[]|s<1]
n!s=[a:p|a<-[1..s],p<-(n-1)!(s-a)]
Try it online!
n!s generates all the n-tuples that sum to s.
Then the answer is ([1..]>>=).(!), i.e. n -> [t | s<-[1..], t<-n!s].
This is a function mapping an integer n to an infinite lazy list of tuples (lists of integers).
answered 7 hours ago
LynnLynn
50.9k899233
50.9k899233
add a comment |
add a comment |
$begingroup$
Perl 6, 37 bytes
$++.polymod(1+$++ xx $_-1).say xx *
Try it online!
Essentially runs polymod with as many entries as needed, where the modulo is always greater than the input, i.e. 0.polymod( 1,1,1 ), 1.polymod( 2,2,2 ) etc. That way the digit is always within the range. Perl6 won't let me modulo infinity...
$endgroup$
1
$begingroup$
This doesn't list every tuple exactly once (for instance,(0, 1, 0, 0)is not listed).
$endgroup$
– bb94
1 hour ago
add a comment |
$begingroup$
Perl 6, 37 bytes
$++.polymod(1+$++ xx $_-1).say xx *
Try it online!
Essentially runs polymod with as many entries as needed, where the modulo is always greater than the input, i.e. 0.polymod( 1,1,1 ), 1.polymod( 2,2,2 ) etc. That way the digit is always within the range. Perl6 won't let me modulo infinity...
$endgroup$
1
$begingroup$
This doesn't list every tuple exactly once (for instance,(0, 1, 0, 0)is not listed).
$endgroup$
– bb94
1 hour ago
add a comment |
$begingroup$
Perl 6, 37 bytes
$++.polymod(1+$++ xx $_-1).say xx *
Try it online!
Essentially runs polymod with as many entries as needed, where the modulo is always greater than the input, i.e. 0.polymod( 1,1,1 ), 1.polymod( 2,2,2 ) etc. That way the digit is always within the range. Perl6 won't let me modulo infinity...
$endgroup$
Perl 6, 37 bytes
$++.polymod(1+$++ xx $_-1).say xx *
Try it online!
Essentially runs polymod with as many entries as needed, where the modulo is always greater than the input, i.e. 0.polymod( 1,1,1 ), 1.polymod( 2,2,2 ) etc. That way the digit is always within the range. Perl6 won't let me modulo infinity...
answered 6 hours ago
Phil HPhil H
1,162817
1,162817
1
$begingroup$
This doesn't list every tuple exactly once (for instance,(0, 1, 0, 0)is not listed).
$endgroup$
– bb94
1 hour ago
add a comment |
1
$begingroup$
This doesn't list every tuple exactly once (for instance,(0, 1, 0, 0)is not listed).
$endgroup$
– bb94
1 hour ago
1
1
$begingroup$
This doesn't list every tuple exactly once (for instance,
(0, 1, 0, 0) is not listed).$endgroup$
– bb94
1 hour ago
$begingroup$
This doesn't list every tuple exactly once (for instance,
(0, 1, 0, 0) is not listed).$endgroup$
– bb94
1 hour ago
add a comment |
$begingroup$
Husk, 2 bytes
πN
Try it online!
Explanation
N is the infinite list of natural numbers [1,2,3,4,...π is Cartesian power.
Result is an infinite list of lists.
Each list of the desired length occurs exactly once because π is cool like that.
Input and output are implicit.
$endgroup$
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
add a comment |
$begingroup$
Husk, 2 bytes
πN
Try it online!
Explanation
N is the infinite list of natural numbers [1,2,3,4,...π is Cartesian power.
Result is an infinite list of lists.
Each list of the desired length occurs exactly once because π is cool like that.
Input and output are implicit.
$endgroup$
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
add a comment |
$begingroup$
Husk, 2 bytes
πN
Try it online!
Explanation
N is the infinite list of natural numbers [1,2,3,4,...π is Cartesian power.
Result is an infinite list of lists.
Each list of the desired length occurs exactly once because π is cool like that.
Input and output are implicit.
$endgroup$
Husk, 2 bytes
πN
Try it online!
Explanation
N is the infinite list of natural numbers [1,2,3,4,...π is Cartesian power.
Result is an infinite list of lists.
Each list of the desired length occurs exactly once because π is cool like that.
Input and output are implicit.
answered 1 hour ago
ZgarbZgarb
26.6k462230
26.6k462230
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
add a comment |
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
1
1
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
$begingroup$
Wow, and this doesn't do [1,1,n] either. Is there a pattern to the order it outputs?
$endgroup$
– billpg
1 hour ago
add a comment |
$begingroup$
Brachylog (v2), 9 bytes
~l.ℕᵐ+≜∧≜
Try it online!
This is an infinite generator that generates all possible tuples. The TIO link has a header that uses the generator to generate 1000 elements and prints them (but the generator could continue indefinitely if I asked for that instead; Brachylog's integers are unbounded).
It feels like there should be a terser way, but there are a lot of constraints and this is the tersest I can fit them into a single program.
Explanation
~l.ℕᵐ+≜∧≜
. Generate
≜ all explicit
~l lists whose length is the input
ᵐ for which every element
ℕ is non-negative
+ and whose sum
≜ is used to order the lists (closest to zero first)
∧ [remove unwanted implicit constraint]
Incidentally, it strikes me as interesting just how different my explanations of the two ≜ are, despite them doing the exact same thing from Brachylog's point of view. The first ≜ is the first nondeterministic predicate in the program, so it sets the order of results; in this case, it calculates all possible explicit values for the sum of the list in the order 0, 1, 2, 3…, and is being used to ensure that the lists are output in order of their sum (this ensures that each possible list appears after a finite amount of output). The second ≜ is used to calculate all the explicit possibilities for the list (rather than outputting a formula specifying how the elements of the list relate to each other).
$endgroup$
$begingroup$
↰₁ẉ⊥is also a good header, for printing infinitely.
$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by theᶠor the⊥in the header.
$endgroup$
– Unrelated String
29 mins ago
add a comment |
$begingroup$
Brachylog (v2), 9 bytes
~l.ℕᵐ+≜∧≜
Try it online!
This is an infinite generator that generates all possible tuples. The TIO link has a header that uses the generator to generate 1000 elements and prints them (but the generator could continue indefinitely if I asked for that instead; Brachylog's integers are unbounded).
It feels like there should be a terser way, but there are a lot of constraints and this is the tersest I can fit them into a single program.
Explanation
~l.ℕᵐ+≜∧≜
. Generate
≜ all explicit
~l lists whose length is the input
ᵐ for which every element
ℕ is non-negative
+ and whose sum
≜ is used to order the lists (closest to zero first)
∧ [remove unwanted implicit constraint]
Incidentally, it strikes me as interesting just how different my explanations of the two ≜ are, despite them doing the exact same thing from Brachylog's point of view. The first ≜ is the first nondeterministic predicate in the program, so it sets the order of results; in this case, it calculates all possible explicit values for the sum of the list in the order 0, 1, 2, 3…, and is being used to ensure that the lists are output in order of their sum (this ensures that each possible list appears after a finite amount of output). The second ≜ is used to calculate all the explicit possibilities for the list (rather than outputting a formula specifying how the elements of the list relate to each other).
$endgroup$
$begingroup$
↰₁ẉ⊥is also a good header, for printing infinitely.
$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by theᶠor the⊥in the header.
$endgroup$
– Unrelated String
29 mins ago
add a comment |
$begingroup$
Brachylog (v2), 9 bytes
~l.ℕᵐ+≜∧≜
Try it online!
This is an infinite generator that generates all possible tuples. The TIO link has a header that uses the generator to generate 1000 elements and prints them (but the generator could continue indefinitely if I asked for that instead; Brachylog's integers are unbounded).
It feels like there should be a terser way, but there are a lot of constraints and this is the tersest I can fit them into a single program.
Explanation
~l.ℕᵐ+≜∧≜
. Generate
≜ all explicit
~l lists whose length is the input
ᵐ for which every element
ℕ is non-negative
+ and whose sum
≜ is used to order the lists (closest to zero first)
∧ [remove unwanted implicit constraint]
Incidentally, it strikes me as interesting just how different my explanations of the two ≜ are, despite them doing the exact same thing from Brachylog's point of view. The first ≜ is the first nondeterministic predicate in the program, so it sets the order of results; in this case, it calculates all possible explicit values for the sum of the list in the order 0, 1, 2, 3…, and is being used to ensure that the lists are output in order of their sum (this ensures that each possible list appears after a finite amount of output). The second ≜ is used to calculate all the explicit possibilities for the list (rather than outputting a formula specifying how the elements of the list relate to each other).
$endgroup$
Brachylog (v2), 9 bytes
~l.ℕᵐ+≜∧≜
Try it online!
This is an infinite generator that generates all possible tuples. The TIO link has a header that uses the generator to generate 1000 elements and prints them (but the generator could continue indefinitely if I asked for that instead; Brachylog's integers are unbounded).
It feels like there should be a terser way, but there are a lot of constraints and this is the tersest I can fit them into a single program.
Explanation
~l.ℕᵐ+≜∧≜
. Generate
≜ all explicit
~l lists whose length is the input
ᵐ for which every element
ℕ is non-negative
+ and whose sum
≜ is used to order the lists (closest to zero first)
∧ [remove unwanted implicit constraint]
Incidentally, it strikes me as interesting just how different my explanations of the two ≜ are, despite them doing the exact same thing from Brachylog's point of view. The first ≜ is the first nondeterministic predicate in the program, so it sets the order of results; in this case, it calculates all possible explicit values for the sum of the list in the order 0, 1, 2, 3…, and is being used to ensure that the lists are output in order of their sum (this ensures that each possible list appears after a finite amount of output). The second ≜ is used to calculate all the explicit possibilities for the list (rather than outputting a formula specifying how the elements of the list relate to each other).
answered 2 hours ago
community wiki
ais523
$begingroup$
↰₁ẉ⊥is also a good header, for printing infinitely.
$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by theᶠor the⊥in the header.
$endgroup$
– Unrelated String
29 mins ago
add a comment |
$begingroup$
↰₁ẉ⊥is also a good header, for printing infinitely.
$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by theᶠor the⊥in the header.
$endgroup$
– Unrelated String
29 mins ago
$begingroup$
↰₁ẉ⊥ is also a good header, for printing infinitely.$endgroup$
– Unrelated String
35 mins ago
$begingroup$
↰₁ẉ⊥ is also a good header, for printing infinitely.$endgroup$
– Unrelated String
35 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by the
ᶠ or the ⊥ in the header.$endgroup$
– Unrelated String
29 mins ago
$begingroup$
Although I do feel like this may not actually be a full answer, since any single independent invocation of this predicate will just generate zeroes, with the "generate all" part being done by the
ᶠ or the ⊥ in the header.$endgroup$
– Unrelated String
29 mins ago
add a comment |
$begingroup$
Pyth - 10 bytes
Loops through all x, and takes [1..x]^n. This makes duplicates, so only keeps ones that are new to that x, aka contain x in them. The formatting is a little weird, but it can be made standard with one more byte, .V1jf}bT^Sb
.V1f}bT^Sb
Try it online.
$endgroup$
add a comment |
$begingroup$
Pyth - 10 bytes
Loops through all x, and takes [1..x]^n. This makes duplicates, so only keeps ones that are new to that x, aka contain x in them. The formatting is a little weird, but it can be made standard with one more byte, .V1jf}bT^Sb
.V1f}bT^Sb
Try it online.
$endgroup$
add a comment |
$begingroup$
Pyth - 10 bytes
Loops through all x, and takes [1..x]^n. This makes duplicates, so only keeps ones that are new to that x, aka contain x in them. The formatting is a little weird, but it can be made standard with one more byte, .V1jf}bT^Sb
.V1f}bT^Sb
Try it online.
$endgroup$
Pyth - 10 bytes
Loops through all x, and takes [1..x]^n. This makes duplicates, so only keeps ones that are new to that x, aka contain x in them. The formatting is a little weird, but it can be made standard with one more byte, .V1jf}bT^Sb
.V1f}bT^Sb
Try it online.
edited 3 hours ago
answered 3 hours ago
MaltysenMaltysen
21.4k445116
21.4k445116
add a comment |
add a comment |
$begingroup$
Jelly, 10 (9?) bytes
9 if we may output using non-consistent separation (which I have enquired about) -- removal of the €.
‘ɼṗ³ċƇ®Ṅ€ß
Try it online!
How?
‘ɼṗ³ċƇ®Ṅ€ß - Main Link: some argument, x (initially equal to n, but unused)
ɼ - recall v from the register (initially 0), then set register to, and yield, f(v)
‘ - f = increment
- (i.e. v=v+1)
³ - program's third command line argument (1st program argument) = n
ṗ - (implicit range of [1..v]) Cartesian power (n)
- (i.e. all tuples of length n with items in [1..v])
Ƈ - filter keep those for which:
ċ - count
® - recall from register
- (i.e. keep only those containing v)
Ṅ€ - print €ach
ß - call this Link with the same arity
- (i.e. call Main(theFilteredList), again the argument is not actually used)
$endgroup$
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the€is required, but let's wait what OP has to say.
$endgroup$
– Kevin Cruijssen
2 hours ago
add a comment |
$begingroup$
Jelly, 10 (9?) bytes
9 if we may output using non-consistent separation (which I have enquired about) -- removal of the €.
‘ɼṗ³ċƇ®Ṅ€ß
Try it online!
How?
‘ɼṗ³ċƇ®Ṅ€ß - Main Link: some argument, x (initially equal to n, but unused)
ɼ - recall v from the register (initially 0), then set register to, and yield, f(v)
‘ - f = increment
- (i.e. v=v+1)
³ - program's third command line argument (1st program argument) = n
ṗ - (implicit range of [1..v]) Cartesian power (n)
- (i.e. all tuples of length n with items in [1..v])
Ƈ - filter keep those for which:
ċ - count
® - recall from register
- (i.e. keep only those containing v)
Ṅ€ - print €ach
ß - call this Link with the same arity
- (i.e. call Main(theFilteredList), again the argument is not actually used)
$endgroup$
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the€is required, but let's wait what OP has to say.
$endgroup$
– Kevin Cruijssen
2 hours ago
add a comment |
$begingroup$
Jelly, 10 (9?) bytes
9 if we may output using non-consistent separation (which I have enquired about) -- removal of the €.
‘ɼṗ³ċƇ®Ṅ€ß
Try it online!
How?
‘ɼṗ³ċƇ®Ṅ€ß - Main Link: some argument, x (initially equal to n, but unused)
ɼ - recall v from the register (initially 0), then set register to, and yield, f(v)
‘ - f = increment
- (i.e. v=v+1)
³ - program's third command line argument (1st program argument) = n
ṗ - (implicit range of [1..v]) Cartesian power (n)
- (i.e. all tuples of length n with items in [1..v])
Ƈ - filter keep those for which:
ċ - count
® - recall from register
- (i.e. keep only those containing v)
Ṅ€ - print €ach
ß - call this Link with the same arity
- (i.e. call Main(theFilteredList), again the argument is not actually used)
$endgroup$
Jelly, 10 (9?) bytes
9 if we may output using non-consistent separation (which I have enquired about) -- removal of the €.
‘ɼṗ³ċƇ®Ṅ€ß
Try it online!
How?
‘ɼṗ³ċƇ®Ṅ€ß - Main Link: some argument, x (initially equal to n, but unused)
ɼ - recall v from the register (initially 0), then set register to, and yield, f(v)
‘ - f = increment
- (i.e. v=v+1)
³ - program's third command line argument (1st program argument) = n
ṗ - (implicit range of [1..v]) Cartesian power (n)
- (i.e. all tuples of length n with items in [1..v])
Ƈ - filter keep those for which:
ċ - count
® - recall from register
- (i.e. keep only those containing v)
Ṅ€ - print €ach
ß - call this Link with the same arity
- (i.e. call Main(theFilteredList), again the argument is not actually used)
edited 2 hours ago
answered 2 hours ago
Jonathan AllanJonathan Allan
54.4k537174
54.4k537174
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the€is required, but let's wait what OP has to say.
$endgroup$
– Kevin Cruijssen
2 hours ago
add a comment |
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the€is required, but let's wait what OP has to say.
$endgroup$
– Kevin Cruijssen
2 hours ago
1
1
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the
€ is required, but let's wait what OP has to say.$endgroup$
– Kevin Cruijssen
2 hours ago
$begingroup$
Based on "as long as the separation between tuples and numbers inside each tuple is clear and consistent. (For example, one tuple per line.)" I assumed it wasn't allowed and the
€ is required, but let's wait what OP has to say.$endgroup$
– Kevin Cruijssen
2 hours ago
add a comment |
$begingroup$
05AB1E, 15 11 bytes
[¼¾LIãvy¾å—
-4 bytes by creating a port of @Maltysen's Pyth answer.
Try it online.
Explanation:
[ # Start an infinite loop:
¼ # Increase the counter_variable by 1 (0 by default)
¾L # Create a list in the range [1, counter_variable]
Iã # Take the cartesian power of this list with the input
v # Loop over each list `y` in this list of lists:
y¾å # If list `y` contains the counter_variable:
— # Print list `y` with trailing newline
$endgroup$
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
add a comment |
$begingroup$
05AB1E, 15 11 bytes
[¼¾LIãvy¾å—
-4 bytes by creating a port of @Maltysen's Pyth answer.
Try it online.
Explanation:
[ # Start an infinite loop:
¼ # Increase the counter_variable by 1 (0 by default)
¾L # Create a list in the range [1, counter_variable]
Iã # Take the cartesian power of this list with the input
v # Loop over each list `y` in this list of lists:
y¾å # If list `y` contains the counter_variable:
— # Print list `y` with trailing newline
$endgroup$
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
add a comment |
$begingroup$
05AB1E, 15 11 bytes
[¼¾LIãvy¾å—
-4 bytes by creating a port of @Maltysen's Pyth answer.
Try it online.
Explanation:
[ # Start an infinite loop:
¼ # Increase the counter_variable by 1 (0 by default)
¾L # Create a list in the range [1, counter_variable]
Iã # Take the cartesian power of this list with the input
v # Loop over each list `y` in this list of lists:
y¾å # If list `y` contains the counter_variable:
— # Print list `y` with trailing newline
$endgroup$
05AB1E, 15 11 bytes
[¼¾LIãvy¾å—
-4 bytes by creating a port of @Maltysen's Pyth answer.
Try it online.
Explanation:
[ # Start an infinite loop:
¼ # Increase the counter_variable by 1 (0 by default)
¾L # Create a list in the range [1, counter_variable]
Iã # Take the cartesian power of this list with the input
v # Loop over each list `y` in this list of lists:
y¾å # If list `y` contains the counter_variable:
— # Print list `y` with trailing newline
edited 1 hour ago
answered 7 hours ago
Kevin CruijssenKevin Cruijssen
42.9k571217
42.9k571217
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
add a comment |
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
2
2
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
When will the program get to [1,2,1]? Remember it has to be within finite time.
$endgroup$
– billpg
7 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
$begingroup$
@billpg Should be fixed now.
$endgroup$
– Kevin Cruijssen
5 hours ago
add a comment |
$begingroup$
VDM-SL, 51 bytes
g(i)==if i=0thenelse[x]^y
Recursive set comprehension with sequence concatenation..
Not on TIO, you could run in a program (if you turn on limits for nat type or it wont terminate):
functions
g:nat->set of ?
g(i)==if i=0thenelse[x]^y
Includes the optional 0s in answer otherwise it would be 52 bytes binding on nat1
$endgroup$
add a comment |
$begingroup$
VDM-SL, 51 bytes
g(i)==if i=0thenelse[x]^y
Recursive set comprehension with sequence concatenation..
Not on TIO, you could run in a program (if you turn on limits for nat type or it wont terminate):
functions
g:nat->set of ?
g(i)==if i=0thenelse[x]^y
Includes the optional 0s in answer otherwise it would be 52 bytes binding on nat1
$endgroup$
add a comment |
$begingroup$
VDM-SL, 51 bytes
g(i)==if i=0thenelse[x]^y
Recursive set comprehension with sequence concatenation..
Not on TIO, you could run in a program (if you turn on limits for nat type or it wont terminate):
functions
g:nat->set of ?
g(i)==if i=0thenelse[x]^y
Includes the optional 0s in answer otherwise it would be 52 bytes binding on nat1
$endgroup$
VDM-SL, 51 bytes
g(i)==if i=0thenelse[x]^y
Recursive set comprehension with sequence concatenation..
Not on TIO, you could run in a program (if you turn on limits for nat type or it wont terminate):
functions
g:nat->set of ?
g(i)==if i=0thenelse[x]^y
Includes the optional 0s in answer otherwise it would be 52 bytes binding on nat1
answered 5 hours ago
Expired DataExpired Data
948217
948217
add a comment |
add a comment |
$begingroup$
Wolfram Language (Mathematica), 131 bytes
While[0<1,If[a~FreeQ~#,Print@#]&/@(b=Table[Select[Range@t~Tuples~s,Tr@#==k&],k,t,t(s=#)]~Flatten~1);a=a~Join~b;t++]&
t=1
a=
Try it online!
$endgroup$
add a comment |
$begingroup$
Wolfram Language (Mathematica), 131 bytes
While[0<1,If[a~FreeQ~#,Print@#]&/@(b=Table[Select[Range@t~Tuples~s,Tr@#==k&],k,t,t(s=#)]~Flatten~1);a=a~Join~b;t++]&
t=1
a=
Try it online!
$endgroup$
add a comment |
$begingroup$
Wolfram Language (Mathematica), 131 bytes
While[0<1,If[a~FreeQ~#,Print@#]&/@(b=Table[Select[Range@t~Tuples~s,Tr@#==k&],k,t,t(s=#)]~Flatten~1);a=a~Join~b;t++]&
t=1
a=
Try it online!
$endgroup$
Wolfram Language (Mathematica), 131 bytes
While[0<1,If[a~FreeQ~#,Print@#]&/@(b=Table[Select[Range@t~Tuples~s,Tr@#==k&],k,t,t(s=#)]~Flatten~1);a=a~Join~b;t++]&
t=1
a=
Try it online!
edited 35 mins ago
answered 43 mins ago
J42161217J42161217
14k21353
14k21353
add a comment |
add a comment |
$begingroup$
Python3 (56 characters)
This runs, but never outputs/returns any values, because the permutations function keeps pulling numbers from count. But in theory, this would return the requested permutations.
from itertools import*
lambda n:permutations(count(1),n)
Proof that this works for limited integer range:
from itertools import*
l = lambda n: permutations(range(1, 10), n)
print(list(l(3))) # returns all permutations of (1, 2, 3, ..., 10) of length 3
$endgroup$
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
add a comment |
$begingroup$
Python3 (56 characters)
This runs, but never outputs/returns any values, because the permutations function keeps pulling numbers from count. But in theory, this would return the requested permutations.
from itertools import*
lambda n:permutations(count(1),n)
Proof that this works for limited integer range:
from itertools import*
l = lambda n: permutations(range(1, 10), n)
print(list(l(3))) # returns all permutations of (1, 2, 3, ..., 10) of length 3
$endgroup$
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
add a comment |
$begingroup$
Python3 (56 characters)
This runs, but never outputs/returns any values, because the permutations function keeps pulling numbers from count. But in theory, this would return the requested permutations.
from itertools import*
lambda n:permutations(count(1),n)
Proof that this works for limited integer range:
from itertools import*
l = lambda n: permutations(range(1, 10), n)
print(list(l(3))) # returns all permutations of (1, 2, 3, ..., 10) of length 3
$endgroup$
Python3 (56 characters)
This runs, but never outputs/returns any values, because the permutations function keeps pulling numbers from count. But in theory, this would return the requested permutations.
from itertools import*
lambda n:permutations(count(1),n)
Proof that this works for limited integer range:
from itertools import*
l = lambda n: permutations(range(1, 10), n)
print(list(l(3))) # returns all permutations of (1, 2, 3, ..., 10) of length 3
answered 33 mins ago
agtoeveragtoever
1,414425
1,414425
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
add a comment |
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
$begingroup$
This is not a solution :-( The last element of the tuple will increase forever, so the other elements will never be reached. ("After infinity" does not count.) Also you never visit (1,1,1), etc., even in the demo case.
$endgroup$
– alexis
17 mins ago
add a comment |
$begingroup$
MATL, 16 bytes
`@:GZ^t!Xs@=Y)DT
Tuples are ordered by increasing sum, and within a given sum they are ordered lexicographically.
Try it online!
$endgroup$
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
add a comment |
$begingroup$
MATL, 16 bytes
`@:GZ^t!Xs@=Y)DT
Tuples are ordered by increasing sum, and within a given sum they are ordered lexicographically.
Try it online!
$endgroup$
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
add a comment |
$begingroup$
MATL, 16 bytes
`@:GZ^t!Xs@=Y)DT
Tuples are ordered by increasing sum, and within a given sum they are ordered lexicographically.
Try it online!
$endgroup$
MATL, 16 bytes
`@:GZ^t!Xs@=Y)DT
Tuples are ordered by increasing sum, and within a given sum they are ordered lexicographically.
Try it online!
edited 32 mins ago
answered 4 hours ago
Luis MendoLuis Mendo
75.3k889292
75.3k889292
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
add a comment |
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
You are supposed to take input
$endgroup$
– H.PWiz
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Thanks. I got it wrong
$endgroup$
– Luis Mendo
4 hours ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
$begingroup$
@H.PWiz Solved now
$endgroup$
– Luis Mendo
30 mins ago
add a comment |
$begingroup$
Python 2, 126 119 bytes
n=input()
m=i=0;p=2**~-n
while 1:
b=map(len,bin(i+p)[3:].split('0'));i+=1
if len(b)==n:print b
if i==p:i=0;m+=1;p*=2
Try it online!
Construct the ordered partitions of m into n bins, for m = 0,1,2,3,... by selecting for binary numbers with n 0s and m 1s.
$endgroup$
add a comment |
$begingroup$
Python 2, 126 119 bytes
n=input()
m=i=0;p=2**~-n
while 1:
b=map(len,bin(i+p)[3:].split('0'));i+=1
if len(b)==n:print b
if i==p:i=0;m+=1;p*=2
Try it online!
Construct the ordered partitions of m into n bins, for m = 0,1,2,3,... by selecting for binary numbers with n 0s and m 1s.
$endgroup$
add a comment |
$begingroup$
Python 2, 126 119 bytes
n=input()
m=i=0;p=2**~-n
while 1:
b=map(len,bin(i+p)[3:].split('0'));i+=1
if len(b)==n:print b
if i==p:i=0;m+=1;p*=2
Try it online!
Construct the ordered partitions of m into n bins, for m = 0,1,2,3,... by selecting for binary numbers with n 0s and m 1s.
$endgroup$
Python 2, 126 119 bytes
n=input()
m=i=0;p=2**~-n
while 1:
b=map(len,bin(i+p)[3:].split('0'));i+=1
if len(b)==n:print b
if i==p:i=0;m+=1;p*=2
Try it online!
Construct the ordered partitions of m into n bins, for m = 0,1,2,3,... by selecting for binary numbers with n 0s and m 1s.
edited 2 mins ago
answered 58 mins ago
Chas BrownChas Brown
5,2291523
5,2291523
add a comment |
add a comment |
If this is an answer to a challenge…
…Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.
…Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
Explanations of your answer make it more interesting to read and are very much encouraged.…Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.
More generally…
…Please make sure to answer the question and provide sufficient detail.
…Avoid asking for help, clarification or responding to other answers (use comments instead).
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%2fcodegolf.stackexchange.com%2fquestions%2f183225%2flist-all-the-tuples%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
$begingroup$
For n=6, is it acceptable to produce 0,0 .. 5,5 or does it have to include 6,6?
$endgroup$
– Phil H
7 hours ago
$begingroup$
For n=6, the 6-tuples are (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1) etc. I'll add this to the the examples.
$endgroup$
– billpg
7 hours ago
1
$begingroup$
Each valid tuple must be listed within finite time, if only the program were allowed to run that long. .. Does this contradict the output being in any order? i.e what if my order is (1,1),(2,1),(3,1)...(n,1) and only once I've gone through every natural number will i print (1,2)
$endgroup$
– Expired Data
7 hours ago
1
$begingroup$
Must we output as we go or would a function which yields an infinite list at the end of time sufficient?
$endgroup$
– Jonathan Allan
3 hours ago
3
$begingroup$
"You may choose your program's output format for your convenience, as long as the separation between tuples and numbers inside each tuple is clear and consistent" - may we output differing (albeit consistently differing) separation (e.g. like this)?
$endgroup$
– Jonathan Allan
3 hours ago