I think the first one should be very much doable, but I am not sure how I would build the "almost complete" and the "similar colors" features.
Edit: scratch that, just intersect the set of available pieces with each set. If there are fewer than n--or m%--missing pieces, suggest those.
I think the first one should be very much doable, but I am not sure how I would build the "almost complete" and the "similar colors" features.