Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

Crack ตัวอักษรต่อสู้กับปัญหาใน JavaScript


ปัญหา

พิจารณาสถานการณ์ที่กองทัพของตัวอักษรสองกลุ่มต่อสู้กันเอง ทหารของทั้งคู่และน้ำหนักมีดังนี้ −

ทีมเอ

ทหาร
น้ำหนัก
อา
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