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; |
||
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 |
goto retry; |
||
writefln("Dealt %d cards:\n%(%-(%8s %)\n%)\n", draw.length, draw); |
writefln("Dealt %d cards:\n%(%-(%8s %)\n%)\n", draw.length, draw); |