Set puzzle: Difference between revisions

Content added Content deleted
(Better second D entry)
(Shorter second D entry)
Line 671: Line 671:
"solid open striped".split).array;
"solid open striped".split).array;


restart:
string[][] draw;
auto draw = deck.randomSample(nDraw).map!(t => [t[]]).array;
string[][][] sets;
auto sets = draw.combinations(3).array.filter!((string[][] cs) =>
while (sets.length != nGoal) {
draw = deck.randomSample(nDraw).map!(t => [t[]]).array;
cs.array.transposed.all!(t => t.array.sort().uniq.count % 2)).array;
if (sets.length != nGoal)
sets = draw.combinations(3).array.filter!((string[][] cs) =>
goto restart;
cs.array.transposed.all!(t => t.array.sort().uniq.count % 2)).array;
}


writefln("Dealt %d cards:\n%(%-(%8s %)\n%)\n", draw.length, draw);
writefln("Dealt %d cards:\n%(%-(%8s %)\n%)\n", draw.length, draw);