Set puzzle: Difference between revisions

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


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


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