JS Fundamentals Mid Exam 7.04.2020 (RETAKE) -- Moving Target
Здравейте, имам проблем със следната задача Moving Target, judge ми дава 70/100. Искам най-вече да разбера къде греша?
https://pastebin.com/CyxD5VUe
Здравейте, имам проблем със следната задача Moving Target, judge ми дава 70/100. Искам най-вече да разбера къде греша?
https://pastebin.com/CyxD5VUe
Здравей,
9 - ти тест гърми заради неправилна логика в "Add" командата!
6 - ти и 10 - ти тест гърмят заради неправилна логика в "Strike" командата!
Прегледай ги и се опитай сам и ако не успееш тогава пиши за помощ.
Прочети условието още веднъж!
Открих си грешките, но пак без резултат 70/100
https://pastebin.com/x54an2GQ
ето логиката в двата кейса:
} else if (command === "Add") {
if (index >= 0 && index < targets.length) {
targets.splice(index, 0, power);
} else {
console.log(`Invalid placement!`);
}
} else if (command === "Strike" && index >= 0 && index < targets.length) {
if (index - power >= 0 && index + power < targets.length) {
targets.splice(index - power, power + power + 1);
} else {
console.log(`Strike missed!`);
}
}
ето твоето решение без 2 - те функции:
function movingTarget(input) {
let sequenceOfTargets = input.shift().split(" ").map(Number);
while (input.length > 0) {
let command = input.shift();
if (command == "End") {
break;
}
let curCommand = command.split(" ")[0];
switch (curCommand) {
case "Shoot":
let indexOfShoot = Number(command.split(" ")[1]);
let power = Number(command.split(" ")[2]);
if (indexOfShoot >= 0 && indexOfShoot < sequenceOfTargets.length) {
sequenceOfTargets[indexOfShoot] -= power;
if (sequenceOfTargets[indexOfShoot] <= 0) {
sequenceOfTargets.splice(indexOfShoot, 1);
}
}
break;
case "Add":
let indexOfAdd = Number(command.split(" ")[1]);
let value = Number(command.split(" ")[2]);
if (indexOfAdd >= 0 && indexOfAdd < sequenceOfTargets.length) {
sequenceOfTargets.splice(indexOfAdd, 0, value);
} else {
console.log(`Invalid placement!`);
}
break;
case "Strike":
let indexOfStrice = Number(command.split(" ")[1]);
let radius = Number(command.split(" ")[2]);
if (indexOfStrice >= 0 && indexOfStrice < sequenceOfTargets.length) {
if (
indexOfStrice - radius >= 0 &&
indexOfStrice + radius < sequenceOfTargets.length
) {
sequenceOfTargets.splice(
indexOfStrice - radius,
radius + radius + 1
);
} else {
console.log(`Strike missed!`);
}
}
break;
}
}
console.log(sequenceOfTargets.join("|"));
function shootCommand(arr, index, power) {
let curItem = arr[index];
let itemForRemove = arr[index];
if (curItem == undefined) {
return arr;
}
if (index <= arr.length - 1) {
curItem = curItem - power;
}
if (curItem <= 0) {
arr = arr.filter((x) => x != itemForRemove);
} else {
arr[index] = curItem;
}
return arr;
}
}