Vấn đề
Xét tình huống quân đội hai nhóm chữ cái đang chiến đấu. Các binh sĩ và trọng lượng của họ như sau:
Nhóm A
| Binh sĩ | |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
Nhóm B
| Binh sĩ | |
|---|---|
| W | 1 |
| X | 2 |
| Y | 3 |
| Z | 4 |
Ngoài binh sĩ, còn có bom được ký hiệu bằng '!', và bom giết chết binh sĩ ở hai bên cạnh nó. Ví dụ: 'A!BC' sẽ kết quả 'C' và '!!CC!!' sẽ kết quả ''.
Hàm cần tìm ra khi tất cả bom nổ xong thì đội nào thắng hoặc cả hai đội hòa nhau.
Ví dụ, nếu đầu vào là:
Đầu vào
const str = '!WX!YZ!DC!BA!';
Đầu ra
const output = 'Tie';
Giải thích
Vì sau khi tất cả bom nổ xong, cả hai đội sẽ kết thúc với cùng điểm số.
Ví dụ
Dưới đây là mã thực hiện:
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';
} else if (sum > 0) {
return 'Team A';
} else {
return 'Tie';
}
};
console.log(stringFight(str));
Kết quả
Tie