CodeCombat
В спокойном состоянии задачка с функцией findBestItem(items) в заключении была решена так, : ``` // Собирай монеты, разгоняя мародёрствующих огров. function findMostHealth(enemies) { var target = null; var targetHealth = 0; var enemyIndex = 0; while(enemyIndex ﹤ enemies.length) { var enemy = enemies[enemyIndex]; if(enemy.health ﹥ targetHealth) { target = enemy; targetHealth = enemy.health; } enemyIndex += 1; } return target; } function valueOverDistance(item) { return item.value / hero.distanceTo(item); } // Возврати предмет с наибольшим значением `valueOverDistance(item)`. function findBestItem(items) { var bestItem = null; var bestValue = 0; var itemsIndex = 0; // Перебери массив предметов. while(itemsIndex ﹤ items.length) { var item = items[itemsIndex]; // Найди предмет с наибольшим значением `valueOverDistance()`. if (bestValue ﹤ valueOverDistance(item) ) { bestValue = valueOverDistance(item); bestItem = item; } itemsIndex++; } return bestItem; } while(true) { var enemies = hero.findEnemies(); var enemy = findMostHealth(enemies); if(enemy && enemy.health ﹥ 15) { while(enemy.health ﹥ 0) { hero.attack(enemy); } } else { var coins = hero.findItems(); var coin = null; coin = findBestItem(coins); if(coin) { hero.moveXY(coin.pos.x, coin.pos.y); } } } ```
В спокойном состоянии задачка с функцией findBestItem(items) в заключении была решена так, : ``` // Собирай монеты, разгоняя мародёрствующих огров. function findMostHealth(enemies) { var target = null; var targetHealth = 0; var enemyIndex = 0; while(enemyIndex ﹤ enemies.length) { var enemy = enemies[enemyIndex]; if(enemy.health ﹥ targetHealth) { target = enemy; targetHealth = enemy.health; } enemyIndex += 1; } return target; } function valueOverDistance(item) { return item.value / hero.distanceTo(item); } // Возврати предмет с наибольшим значением `valueOverDistance(item)`. function findBestItem(items) { var bestItem = null; var bestValue = 0; var itemsIndex = 0; // Перебери массив предметов. while(itemsIndex ﹤ items.length) { var item = items[itemsIndex]; // Найди предмет с наибольшим значением `valueOverDistance()`. if (bestValue ﹤ valueOverDistance(item) ) { bestValue = valueOverDistance(item); bestItem = item; } itemsIndex++; } return bestItem; } while(true) { var enemies = hero.findEnemies(); var enemy = findMostHealth(enemies); if(enemy && enemy.health ﹥ 15) { while(enemy.health ﹥ 0) { hero.attack(enemy); } } else { var coins = hero.findItems(); var coin = null; coin = findBestItem(coins); if(coin) { hero.moveXY(coin.pos.x, coin.pos.y); } } } ```
