ปัญหา
พิจารณาสถานการณ์ที่กองทัพของตัวอักษรสองกลุ่มต่อสู้กันเอง ทหารของทั้งคู่และน้ำหนักมีดังนี้ −
ทีมเอ
| ทหาร | น้ำหนัก |
|---|---|
| อา | 1 |
| บ | 2 |
| ซี | 3 |
| ด | 4 |
ทีมบี
| ทหาร | น้ำหนัก |
|---|---|
| ว | 1 |
| X | 2 |
| ย | 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