Vấn đề
Hãy xem xét một tình huống mà quân đội của hai nhóm bảng chữ cái đang chiến đấu với nhau. Biên giới của cả hai và trọng lượng của chúng như sau -
ĐộiA
Người lính | Trọng lượng |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
TeamB
Người lính | Trọng lượng |
---|---|
W | 1 |
X | 2 |
Y | 3 |
Z | 4 |
Ngoài những người lính, trong đấu trường cũng có những quả bom được ký hiệu là ‘!’ Và những kẻ giết bom được đặt ở các cạnh của nó.
Ví dụ:‘A! BC’ sẽ dẫn đến kết quả là ‘C’ và ‘!! CC !!’ sẽ dẫn đến kết quả là ‘’.
Chức năng của chúng ta cần phải tìm ra khi nào tất cả các quả bom trong đấu trường phát nổ thì đội nào thắng hoặc đội nào thắng nếu cả hai đội có cùng trọng lượng.
Ví dụ:nếu đầu vào của hàm là -
Đầu vào
const str = '!WX!YZ!DC!BA!';
Đầu ra
const output = 'Tie';
Giải thích đầu ra
Vì sau khi bom nổ cả hai đội sẽ có cùng số điểm.
Ví dụ
Sau đây là mã -
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));
Đầu ra
Tie