Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

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

ปัญหา

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

TeamA

ทหารน้ำหนัก
A1
B2
C3
D4

TeamB

ทหารน้ำหนัก
W1
X2
Y3
Z4

นอกจากทหารแล้ว ยังมีระเบิดในสนามรบที่แสดงด้วย '!' และระเบิดจะฆ่าทหารที่อยู่ด้านข้างเคียง

ตัวอย่าง: '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