Ice hunter problem

The hero attack only 2 yaks.Why??

// Hunt for 4 yaks. Choose only the small ones.
// Small yak names contain a "bos" substring.

// This function checks if a word contains a substring.
function isSubstring(word, substring) {
    // We iterate through the start indexes only.
    var rightEdge = word.length - substring.length;
    // Loop through the indexes of the word.
    for (var i = 0; i <= rightEdge; i++) {
        // For each of them loop through the substring
        for (var j = 0; j < substring.length; j++) {
            // Use an offset for the word's indexes.
            var shiftedIndex = i + j;
            // If letters aren't the same:
            if (word[shiftedIndex] != substring[j]) {
                // Check the next start index in the word.
                break;
            }
            // If it was the last letter in the substring:
            if (j == substring.length - 1) {
                // Then the substring is in the word.
                return true;
            }
        }
    }
    // We haven't found the substring in the word.
    return false;
}

// Loop through all enemies.
var enemies = hero.findEnemies();
for (var e = 0; e < enemies.length; e++) {
    var enemy = enemies[e];
    // Use the function isSubstring to check
    // if an enemy.id contains "bos":
    let enemyName = enemy.id;
    hero.say(enemyName);
    if (isSubstring(enemyName, "bos")) {  
            while (enemy.health > 0) {
                hero.attack(enemyName);
            }   
    }
        // Then defeat it.     
}

Hi 11193,

Your code works when I try it - my hero kills 4 yaks. I’m using Anya, and didn’t lose much health, so I’m not sure why you didn’t succeed. Try submitting again?

Jenny

yes, many times. It didn’t help(( I tried to change heroes too…

Hmmm, interesting. Does the hero say the enemy names with ‘bos’ in them, and not attack; or not say the names at all?

Jenny

he say the names but attack only 2 yaks

Ha, after trying several times I got the code to fail - only 3 yaks got attacked, and the hero didn’t say the name of the fourth one. I wonder if there’s an issue with the fact that when the array gets constructed, the yak(s) in question are out of sight of the hero?

Solution is (I hope) easy - just put the code into a while(true) loop, so that the hero checks all the yak names again, and carries on hunting. Does that work for you?

Jenny