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