समस्या
एक ऐसी स्थिति पर विचार करें जहां वर्णमाला के दो समूहों की सेनाएं एक-दूसरे से लड़ रही हैं। दोनों के सैनिक और उनके वजन इस प्रकार हैं -
टीम 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