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

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.