SET is a card game in which players try to find valid 3-card sets from 12 cards on the table. What makes a valid set? Every card has four features, each with three possible values. In a valid set, each of the features, when looked at individually, are either the same on each card OR different on each card.
In this problem, you are given a 12x4 matrix representing 12 cards (rows) with 4 features (columns) each. The N-th row corresponds to the N-th card. Each feature has a value of 0, 1, or 2. Create a function that returns an Mx3 matrix of all valid sets, where each row is a set and each column is the index to a card in the set. For every set, the cards (columns) should be arranged in ascending order. If there are no valid sets for a given input, return []. You may assume that all cards are unique.
Example
cards = [1 0 1 0 1 1 1 1 2 2 1 0 0 1 2 2 2 1 1 1 1 0 1 2 0 0 0 0 2 2 2 2 0 2 0 0 1 1 1 0 0 1 0 2 0 2 0 2];
returns
sets = [2 7 8 6 8 11]
because there are two valid sets. Cards 2,7, and 8 make one set and cards 6,8, and 11 form another set. Notice that a card can be a part of more than one set.
A related question on Stack Overflow:
Almost.....!
trying to do it without a for-loop
Using parts of Solution 115046
Using parts of Solution 114934
Return a list sorted by number of occurrences
1179 Solvers
155 Solvers
201 Solvers
185 Solvers
Calculate the Number of Sign Changes in a Row Vector (No Element Is Zero)
115 Solvers