Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!

Problem 840. SET (the card game)

Created by Matt Eicholtz

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.

Problem Group

Solution Statistics

18 correct solutions 7 incorrect solutions
Last solution submitted on Nov 17, 2014

Problem Comments

Solution Comments