createDiff

Creates a diff between the detailed combo sets that were available and the ones of those that were included.

It assumes that we can only include available combos and omits any checks to verify in order to not hurt performance.

If all details of a combo that were available were also included it adds the combo specifier, i.e. 'AA' or 'AKs' to the complete set. If some details were missing it instead adds the included combos to the incomplete set, i.e. AsKs, AhKh, AcKc.

Note round tripping createDiff and applyDiff, results in the original included set.

createDiff(available: Set<string>, included: Set<string>, blockers: Set<string>): Object
Parameters
available (Set<string>) detail set of combos that were available to be included
included (Set<string>) detail set of the available combos that were included
blockers (Set<string>) cards that may be part of available combos but are blocked for the included set i.e. 'Ah', 'Ks'
Returns
Object: result { complete, incomplete } complete being a set of combo notations for detail sets that were fully included and incomplete a set of detail notations of combos that were partially included

applyDiff

Applies a diff derived via createDiff to the available set.

applyDiff(available: Set<string>, blockers: Set<string>): Set
Parameters
available (Set<string>) detail set of combos that were available to be included
blockers (Set<string>) cards that weren't available to be included when diff was created, i.e. 'Ah', 'Ks' should be the same as the ones passed to createDiff to arrive at the same included set
Returns
Set: included combos for which the diff from the available ones was created