[SOLVED] Помогите пройти уровень! Букведский лес. Металлодетектор

Где ошибка? непойму.

function coinDistance() {
var item = hero.findNearestItem();
if (item) {
var distance = hero.distanceTo(item);
return true;
}
else {
return 0;
}
}

while (true) {
var distance = coinDistance();
if (distance > 0) {
hero.say(distance);
}

}

Hello and welcome to codecombat discourse @Nik_Casual! :partying_face: This is a cozy forum where you can share ideas, share fan art, get assistance for code, etc! Before you proceed, we hope that you review this topic, which shows all essentials of this board! Thanks!

Можете ли вы отформатировать свой код, как описано ниже, чтобы мы могли помочь вам решить уровень?

Andrei

2 Likes

Добро пожаловать на Форум, @Nik_Casual! :partying_face:

Попробуйте вернуть дистанцию до предмета:

if (item) {
var distance = hero.distanceTo(item);
if (distance){
  return distance;
}
}

Кстати, нам будет легче, если вы отформатируете ваш код, как сказал @AnSeDra.
(если что, ссылка здесь)

1 Like

Спасибо! Подскажите еще одно задание где скобки расставить:

// Пройди к Эстер и получи три секретных значения.
hero.moveXY(24, 16);
var secretA = hero.findNearestFriend().getSecretA();
var secretB = hero.findNearestFriend().getSecretB();
var secretC = hero.findNearestFriend().getSecretC();

// Скажи "TRUE" Тамашу, если A И B истинны, ИЛИ если C истинно. Иначе скажи "FALSE."
// Помни об использовании скобок для приоритета в логических операциях.
var tam = (secretA && secretB) || secretC;
hero.moveXY(19, 26);
hero.say(tam);

// Скажи "TRUE" Жофи, если A ИЛИ B истинны, И если C истинно. Иначе скажи "FALSE."
var tam = (secretA || secretB) && secretC;
hero.moveXY(26, 36);
hero.say(tam);

// Скажи "TRUE" Иштвану, если A ИЛИ C истинны, И если B ИЛИ C истинны. Иначе скажи "FALSE."
var tam = (secretA || secretC) || (secretB || secretC);
hero.moveXY(37, 34);
hero.say(tam);

// Скажи "TRUE" Чилле, если A И B истинны, ИЛИ если B истинно И C НЕ истинно. Иначе скажи "FALSE."
var tam = secretA && secretB || secretB !=secretC;
hero.moveXY(40, 22);
hero.say(tam);

Hi @Nik_Casual, Welcome to the Discourse :tada: :partying_face:!!
Your saying tam for everything, try changing the variable the different words or letter.
Screenshot 2020-09-20 at 8.35.51 PM

Изменил, но скобки тоже, в последнем нужно где-то поставить.

// Пройди к Эстер и получи три секретных значения.
hero.moveXY(24, 16);
var secretA = hero.findNearestFriend().getSecretA();
var secretB = hero.findNearestFriend().getSecretB();
var secretC = hero.findNearestFriend().getSecretC();

// Скажи "TRUE" Тамашу, если A И B истинны, ИЛИ если C истинно. Иначе скажи "FALSE."
// Помни об использовании скобок для приоритета в логических операциях.
var tam = (secretA && secretB) || secretC;
hero.moveXY(19, 26);
hero.say(tam);

// Скажи "TRUE" Жофи, если A ИЛИ B истинны, И если C истинно. Иначе скажи "FALSE."
var tar = (secretA || secretB) && secretC;
hero.moveXY(26, 36);
hero.say(tar);

// Скажи "TRUE" Иштвану, если A ИЛИ C истинны, И если B ИЛИ C истинны. Иначе скажи "FALSE."
var tac = (secretA || secretC) || (secretB || secretC);
hero.moveXY(37, 34);
hero.say(tac);

// Скажи "TRUE" Чилле, если A И B истинны, ИЛИ если B истинно И C НЕ истинно. Иначе скажи "FALSE."
var tax = secretA && secretB || secretB !=secretC;
hero.moveXY(40, 22);
hero.say(tax);```

Может (secretA || secretC) && (secretB || secretC);

и

tax = (secretA and secretB) || (secretB !=secretC)

2 Likes

I believe this part is the problem, between secretC and secretB it should be && not ||

2 Likes

:+1: Спасибо, верно!

2 Likes

Пожалуйста! Рад помочь!

1 Like

:+1: Спасибо, да именно так.

2 Likes

No problemo. Anytime :slight_smile:

1 Like

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