Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 27.12.2020 в Сообщения

  1. 1 балл
    Применительно к копалкам первое решение хуже второго. Третье решение обещает дать лучший результат, но не оправдывает надежд. Оно лучше первого, но также хуже второго. В случае, если маршрут робота пролегает в целом через пустые блоки, оптимален вариант "если не удалось осуществить движение, бей блок". Если пустые блоки на пути робота встречаются редко, оптимален вариант "сначала ударь блок перед роботом, затем двигайся". Вариант "сначала проверь блок, а затем бей или двигайся" уместен только на фермах опыта, где двигаться вообще не надо. Впрочем, возможно, даже там неуместен, я не проводил таких исследований. При желании можно даже посчитать тот уровень заполненности пути робота блоками, выше которого выгодно будет использовать первый вариант, а ниже – второй. Если тема получит развитие, можно будет и посчитать точное значение. А пока для простоты я буду исходить из предположения, что пещеры довольно редки, и почти всегда на пути робота находится блок. В случае, когда робот сначала пытается двигаться, а затем рубить блок в случае неудачи затраты времени примерно такие: 10 тиков на неудачную попытку движения. 6 тиков (предположим) на рубку блока. 8 тиков на успешную попытку движения. В случае, если робот сначала бьёт, а затем двигается: 6 тиков на рубку блока 8 тиков на движение Скорость продвижения увеличится в 24/14=1.71 раза. При сплошной копке "слой через два" ускорение не столь высоко, но всё равно ощутимо: в 1.38 раз. В случае, если перед роботом нет препятствий, и он выполняет неудачный взмах киркой до выполнения движения, произойдёт замедление в (1+8)/8 = 1.125 раза. Но при работе в шахте препятствие перед роботом чаще присутствует, нежели отсутствует. Применив подобные расчёты для варианта с использованием detect(), ты обнаружишь, что его применение вредно. По крайней мере, в шахте без больших полостей.
  2. 1 балл
    подобная конструкция используется ещё с computercraft с черепашек это из серии работает, не лезь но это не значит что не нужно искать более оптимальный вариант 1 если робот не может идти вперёд ( значит что-то ему мешает (блок,моб,игрок) ) - атакуй 2 если робот не может атаковать или разрушить блок (значит перед роботом пусто) - идём вперёд В первом случае робот будет максимально быстро идти, пока во что-то не упрётся, затем атакует и пойдёт дальше Во втором случае робот будет махать киркой а затем идти, не важно есть там что-то или нет Возможно верным решением будет смотреть если перед роботом что-то, а затем пробывать идти чтото типа этого, а ещё лучше вывести функцию while true do if r.detect() then r.swing() elseif r.forward() then xPos = xPos - 1 break end end
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...