Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function heartDeliv(data) {
- let hearts = data.shift().split("@").map(Number); // [2, 4, 2]
- let heartsLength = hearts.length;
- let lastPositionIndex = 0;
- let currentIndex = 0;
- let index = 0;
- let command = data[index];
- index++;
- while (command !== "Love!") {
- let tokens = command.split(" "); // ["Jump", "2"]
- let currentLength = +tokens[1]; // взимам единствено текущата дължина на скока като число
- currentIndex += currentLength; // прибавям текущата дължина на скока към текущия индекс
- // проверявам дали текущият индекс е в границите на масива hearts, т.е дали е валиден
- if (currentIndex <= heartsLength - 1) {
- // проверявам дали стойността на елемента с текущия индекс вече е = на 0
- if (hearts[currentIndex] === 0) {
- console.log(
- `Place ${currentIndex} already had Valentine's day.`
- );
- // вземам следващия скок
- command = data[index];
- index++;
- continue;
- } else {
- // ако стойността на елемента с текущия индекс не е равна на 0, изваждам -2 от стойността
- hearts[currentIndex] -= 2;
- }
- } else {
- // ако текущият индекс Не е в рамките на масива, текущия индекс става равен на 0
- currentIndex = 0;
- // проверявам дали стойността на елемента с текущия индекс вече е = на 0
- if (hearts[currentIndex] === 0) {
- console.log(
- `Place ${currentIndex} already had Valentine's day.`
- );
- // вземам следващия скок
- command = data[index];
- index++;
- continue;
- } else {
- // ако стойността на елемента с текущия индекс не е равна на 0, изваждам -2 от стойността
- hearts[currentIndex] -= 2;
- }
- }
- // проверявам дали стойността на елемента (след като съм извадил от стойността на елемента 2) с
- // текущия индекс е по-малка от 0 и ако Е, тогава ѝ задавам стойност 0.
- if (hearts[currentIndex] < 0) {
- hearts[currentIndex] = 0;
- console.log(`Place ${currentIndex} has Valentine's day.`);
- } else if (hearts[currentIndex] === 0) {
- console.log(`Place ${currentIndex} has Valentine's day.`);
- }
- lastPositionIndex = currentIndex;
- command = data[index];
- index++;
- }
- console.log(`Cupid's last position was ${lastPositionIndex}.`);
- let sum = 0;
- let isSuccessfull = true;
- let failCounter = 0;
- // тук вече сме обработили масива hearts и преминавам през него, за да разбера, дали има елементи
- // в него със стойност различна от 0, което означава, че мисията НЕ е успешна; за всяка неуспешна мисия
- // брояча увеличава стойността си с 1, съответно ако мисията е неуспешна променливата isSuccessfull
- // става равна на false. Ако стойността на sum е 0, това значи, че всички елементи са със ст-ст 0,
- // което означава, че мисията е успешна.
- for (let house of hearts) {
- if (house !== 0) {
- failCounter++;
- isSuccessfull = false;
- }
- sum += house;
- }
- if (sum === 0) {
- isSuccessfull = true;
- }
- if (isSuccessfull) {
- console.log("Mission was successful.");
- } else {
- console.log(`Cupid has failed ${failCounter} places.`);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment