Set puzzle: Difference between revisions

→‎{{header|D}}: break off findSets search when target is overshot
m (omissions and categories)
(→‎{{header|D}}: break off findSets search when target is overshot)
Line 139:
}
 
immutable(Card)[3][] findSets(in Card[] cards), purein nothrowuint {target = 0)
pure nothrow {
auto len = cards.length;
if (len >= 3) {
Line 146 ⟶ 147:
for (int j = i + 1; j < len - 1; j++)
for (int k = j + 1; k < len; k++)
if (validSet(cards[i], cards[j], cards[k])) {
sets ~= [cards[i], cards[j], cards[k]];
if (target != 0 && sets.length > target)
return null;
}
}
return assumeUnique(sets);
Line 163 ⟶ 167:
do {
cards = super.deal(numCards);
} while (findSets(cards, numSets).length != numSets);
 
return assumeUnique(cards);
Anonymous user