14 votes

The game of Set (and some variations)

2 comments

  1. doingmybest
    Link
    Set is so fun! But there is definitely a “brain type” that excels. I find myself needing to grind and find, but one of my kids just sees sets instantly and effortlessly. I think it’s kind of neat...

    Set is so fun! But there is definitely a “brain type” that excels. I find myself needing to grind and find, but one of my kids just sees sets instantly and effortlessly. I think it’s kind of neat to get a group together and see what kind of brain your friends have. But in my experience, the people who get it will quickly wipe the floor with everyone else and practice doesn’t seem to help.

    4 votes
  2. RheingoldRiver
    Link
    There's another variant of Set called Planet, which is played with regular Set cards, but instead of finding a Set, you find 2 intersecting sets currently on their board...but the intersection...

    There's another variant of Set called Planet, which is played with regular Set cards, but instead of finding a Set, you find 2 intersecting sets currently on their board...but the intersection card is not required. This variant is called "Planet."

    This is the validation code for it:

    function validatePlanet(possibleGroup: CardType[]) {
      // We don't know what order in which the user clicked the planet. AB - DE is the invariant
      // for a planet, however the user may have clicked in the order A, D, E, B. Therefore, we
      // have to check every combinatorially distinct possibility of cards in our vector for
      // a possible planet.
      let firstValid = true;
      let secondValid = true;
      let thirdValid = true;
      let pg = possibleGroup.map((c) => c.vector);
      // we don't know the length of the card, but we can assume all cards have the same length
      for (let i in possibleGroup[0].vector) {
        // These are the only possibilities. 4! = 24 but the subtraction is commutative in this
        // case (since 0 mod 3) and addition is always commutative so 24 / (2 * 2 * 2)
        // = 24 / 8 = 3.
        if ((pg[0][i] + pg[1][i] - pg[2][i] - pg[3][i]) % 3 !== 0) {
          firstValid = false;
        }
        if ((pg[0][i] + pg[2][i] - pg[1][i] - pg[3][i]) % 3 !== 0) {
          secondValid = false;
        }
        if ((pg[0][i] + pg[3][i] - pg[1][i] - pg[2][i]) % 3 !== 0) {
          thirdValid = false;
        }
      }
      return firstValid || secondValid || thirdValid;
    }
    

    Or in other words, a + b - c - d = 0 (mod 3), where a & b is in the first set; and c & d are in the second set.

    You can also add a 5th dimension to Set, by coloring in some of the cards and having black/silver/white be another dimension (we did this at a math summer program I went to).

    I think I saw projective set once, with physical cards - although I'm a bit obsessed with this game, I wasn't as interested in this, because it's not so much a game of visual recognition, as much as it is spatial processing, making it mathematically similar but game-mechanically a completely different genre.

    1 vote