编程逻辑 - 比较 3 个值 - JS

Programming logic - Compare 3 values - JS

我有这个片段,它正在获取 3 个数字,并且可以区分它们。如果 3 个数字中的一个与其他数字不同,则它必须 return 它的对应端。

一个输入示例: 1 1 0 0 0 0 1 0 0

输出必须是: C * A

我采用的方法是:

var input = require('fs').readFileSync('stdin', 'utf8')
var lines = input.split('\n')

for (let i = 0; i < lines.length; i++) {
  var round = lines[i].split(' ').map(i => parseInt(i))
  // console.log(round); [1, 1, 0]

  var A = round[0]
  var B = round[1]
  var C = round[2]

    if(A === B && A === C){
      console.log("*");
    } else if (A === B && A !== C) {
        console.log("C");
    } else if (A !== B && A === C) {
        console.log("B");
    } else if (A !== B && A !== C) {
        console.log("A");
    }
}

写@somethinggamajig 说:

function _0or1(arr) {
    [A,B,C] = arr
    if (A === B && A === C) {
        console.log("*");
    } else if (A === B) {
        console.log("C");
    } else if (A === C) {
        console.log("B");
    } else {
        console.log("A");
    }
}

_0or1([0,0,0])
_0or1([1,0,0])
_0or1([0,1,0])
_0or1([0,0,1])
_0or1([1,1,0])
_0or1([0,1,1])
_0or1([1,0,1])
_0or1([1,1,1])

我不确定问题到底是什么,但如果是尝试以某种方式最小化代码,需要注意的一件事是我们不关心值是 0 还是 1,只关心玩家选择了相同或不同,所以一旦我们有了一轮的 A、B 和 C 值,我们就可以这样做:

(更新:感谢@Samathingamajig 的评论,删除了多余的 != 比较)

 console.log( ((A==B)&&(B==C)) ? '*' : (A==B) ? 'C' : (A==C) ? 'B' : 'A' );