So, it can get a bit confusing, but it's doable with `xor`ing your values:

    const xor = (a, b) => !a ^ !b;
    const onlyOne = (a, b, c) => xor(xor(xor(a, b), c), a && b && c)

Sure doing a straight `xor` on all 3 values leaves room for them all to be true, but then we just `xor` that value in to get our results.

[![enter image description here][2]][2]

Also, the reason `xor(a, b) != a ^ b` is to convert those values to boolean beforehand. It's nice that with booleans `a ^ b === !a ^ !b`.

  [2]: https://i.sstatic.net/ihNFS.png