Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
38
Task/Combinations/CLU/combinations.clu
Normal file
38
Task/Combinations/CLU/combinations.clu
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
% generate the size-M combinations from 0 to n-1
|
||||
combinations = iter (m, n: int) yields (sequence[int])
|
||||
if m<=n then
|
||||
state: array[int] := array[int]$predict(1, m)
|
||||
for i: int in int$from_to(0, m-1) do
|
||||
array[int]$addh(state, i)
|
||||
end
|
||||
|
||||
i: int := m
|
||||
while i>0 do
|
||||
yield (sequence[int]$a2s(state))
|
||||
i := m
|
||||
while i>0 do
|
||||
state[i] := state[i] + 1
|
||||
for j: int in int$from_to(i,m-1) do
|
||||
state[j+1] := state[j] + 1
|
||||
end
|
||||
if state[i] < n-(m-i) then break end
|
||||
i := i - 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end combinations
|
||||
|
||||
% print a combination
|
||||
print_comb = proc (s: stream, comb: sequence[int])
|
||||
for i: int in sequence[int]$elements(comb) do
|
||||
stream$puts(s, int$unparse(i) || " ")
|
||||
end
|
||||
end print_comb
|
||||
|
||||
start_up = proc ()
|
||||
po: stream := stream$primary_output()
|
||||
for comb: sequence[int] in combinations(3, 5) do
|
||||
print_comb(po, comb)
|
||||
stream$putl(po, "")
|
||||
end
|
||||
end start_up
|
||||
Loading…
Add table
Add a link
Reference in a new issue