Set puzzle: Difference between revisions

Shorter second D entry
(Better second D entry)
(Shorter second D entry)
Line 671:
"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 = deckcs.randomSample(nDraw)array.maptransposed.all!(t => [t[]].array.sort().uniq.count % 2)).array;
whileif (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);