Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Ordered-partitions/D/ordered-partitions-1.d
Normal file
25
Task/Ordered-partitions/D/ordered-partitions-1.d
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import std.stdio, std.algorithm, std.range, std.array, std.conv,
|
||||
combinations3;
|
||||
|
||||
alias iRNG = int[];
|
||||
|
||||
iRNG[][] orderPart(iRNG blockSize...) {
|
||||
iRNG tot = iota(1, 1 + blockSize.sum).array;
|
||||
|
||||
iRNG[][] p(iRNG s, in iRNG b) {
|
||||
if (b.empty)
|
||||
return [[]];
|
||||
iRNG[][] res;
|
||||
foreach (c; s.combinations(b[0]))
|
||||
foreach (r; p(setDifference(s, c).array, b.dropOne))
|
||||
res ~= c.dup ~ r;
|
||||
return res;
|
||||
}
|
||||
|
||||
return p(tot, blockSize);
|
||||
}
|
||||
|
||||
void main(in string[] args) {
|
||||
auto b = args.length > 1 ? args.dropOne.to!(int[]) : [2, 0, 2];
|
||||
writefln("%(%s\n%)", b.orderPart);
|
||||
}
|
||||
44
Task/Ordered-partitions/D/ordered-partitions-2.d
Normal file
44
Task/Ordered-partitions/D/ordered-partitions-2.d
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import core.stdc.stdio;
|
||||
|
||||
void genBits(size_t N)(ref uint[N] bits, in ref uint[N] parts,
|
||||
uint mask, uint all, uint res, uint n, uint pid)
|
||||
nothrow @nogc {
|
||||
static void showPart(in uint x) nothrow @nogc {
|
||||
'['.putchar;
|
||||
for (uint i = 0; (1 << i) <= x; i++)
|
||||
if (x & (1 << i))
|
||||
printf("%d ", i + 1);
|
||||
']'.putchar;
|
||||
}
|
||||
|
||||
while (!n) {
|
||||
bits[pid] = res;
|
||||
pid++;
|
||||
if (pid == N) {
|
||||
foreach (immutable b; bits)
|
||||
showPart(b);
|
||||
'\n'.putchar;
|
||||
return;
|
||||
}
|
||||
all &= ~res;
|
||||
mask = all;
|
||||
res = 0;
|
||||
n = parts[pid];
|
||||
}
|
||||
|
||||
while (mask) {
|
||||
immutable uint i = mask & -int(mask);
|
||||
mask &= ~i;
|
||||
genBits(bits, parts, mask, all, res | i, n - 1, pid);
|
||||
}
|
||||
}
|
||||
|
||||
void main() nothrow @nogc {
|
||||
immutable uint[3] parts = [2, 0, 2];
|
||||
uint m = 1;
|
||||
foreach (immutable p; parts)
|
||||
m <<= p;
|
||||
|
||||
uint[parts.length] bits;
|
||||
genBits(bits, parts, m - 1, m - 1, 0, parts[0], 0);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue