编程逻辑 - 比较 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' );
我有这个片段,它正在获取 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' );