考虑这样一种情况,即由两组字母组成的军队正在互相争斗。两者的士兵及其体重如下 -
A队
士兵 | 重量 |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
B队
士兵 | 重量 |
---|---|
W | 1 |
X | 2 |
Y | 3 |
Z | 4 |
除了士兵之外,竞技场中也有炸弹,用“!”表示,炸弹会杀死位于其附近的士兵。
例如:'A!BC' 将导致 'C' 和 '!!CC!!' 将导致''。
我们的函数应该需要找出竞技场中的所有炸弹何时爆炸,哪支球队获胜,或者两支球队最终的重量是否相同。
例如,如果函数的输入是 -
输入
const str = '!WX!YZ!DC!BA!';
输出
const output = 'Tie';
输出说明
因为在所有炸弹爆炸后,两支球队的得分都会相同。
以下是代码 -
const str = '!WX!YZ!DC!BA!'; const stringFight = (str) => { const map = { 'D': 4,'C': 3,'B': 2,'A': 1, 'Z': -4,'Y': -3,'X': -2,'W': -1 }; const arr = []; const arr1 = str.split(''); for(let i=0;i<str.length;i++){ if(arr1[i-1] !== '!' && arr1[i] !== '!' && arr1[i+1] !== '!'){ arr.push(arr1[i]); }; }; const sum = arr.reduce((a, b) => a + (map[b] ? map[b] : 0), 0); if(sum < 0){ return 'Team B'; if(sum < 0){ return 'Team B'; }else if(sum > 0){ return 'Team A'; }else{ return 'Tie'; }; }; console.log(stringFight(str));输出结果
Tie