それぞれが善悪の辺のメンバーを表す2つの文字列を与えられた場合、どちらの辺が勝つかを調べます。比較演算子が正しい値を返さない
グッド:ホビット - 1、メンズ - 2、エルフ - 3、ドワーフ - 3、イーグルス - 4、ウィザーズ - 10
バイオハザード:オーク - 1、メンズ - 2、ワーグ - 2、ゴブリン - 2 、Uruk Hai - 3、Trolls - 5、Wizards - 10
私はどちら側が勝つかを把握する関数を書いています。ほとんどの場合は動作しますが、時には奇妙な動作をします。
function goodVsEvil(good, evil){
//string to array good and array evil in integers
var aG = good.split(" ").map(x=>parseInt(x))
var aE = evil.split(" ").map(x=>parseInt(x))
//calculate final score good and final score evil
var fSG = aG[0]*1 + aG[1]*2 + aG[2]*3 + aG[3]*3 + aG[4]*4 + aG[5]*10
var fSE = aE[0]*1 + aE[1]*2 + aE[2]*2 + aE[3]*2 + aE[4]*3 + aE[5]*5 + aE[5]*10
console.log('equals: '+ (fSG == fSE))
console.log('good > evil: '+(fSG > fSE))
console.log('good < evil: '+(fSG < fSE))
}
一部のエラーの例:
var result = goodVsEvil('1 0 0 0 1 0', '0 0 0 0 0 1 0')
//output
good: 5
evil: 5
equals: false
good > evil: false
good < evil: true
別:
good: 10
evil: 10
equals: false
good > evil: false
good < evil: true
別:ここ
good: 2
evil: 2
equals: false
good > evil: true
good < evil: false
、それが正常に働いて
var result = goodVsEvil('1 1 0 0 0 0', '0 0 0 0 1 0 0')
good: 3
evil: 3
equals: true
good > evil: false
good < evil: false
このパズルはcodewarsからです:あなたはfSG
とfSE
をログインした場合、あなたが実際にfSE
はあなたの最初の例では15
、ない5
等しいことがわかりますhttps://www.codewars.com/kata/good-vs-evil/train/javascript
Damnit!だから愚かな.... *一息* –