Прохождение Human Resource Machine — быстрее, меньше, хитрее

Добрый день уважаемые посетители VGTimes.Ru. Спасибо большое Stalxer за написание статей о прохождении данной игры, которые и натолкнули меня на путь оптимизации и написания этого материала. В данной статье мы рассмотрим прохождение некоторых уровней, узнаем пару интересных моментов игры и постараемся сделать наши алгоритмы быстрее и меньше. За дело!

Итак, список сегодняшних номинантов на оптимизацию таков:

  • №16 — Сверхположительность;
  • №35 — Уничтожитель копий;
  • №36 — Упорядочиватель;
  • №40 — Фабрика простоты.

Рядом с заголовком будут написаны числа, а именно: количество команд/количество шагов. К скриншотам также будут добавлены сами программы в комментариях. Это сделано для удобства анализа информации и переноса данных решений в вашу копию игры. На скриншотах на операциях прыжков, если они уходят за рамки, будут подписаны номера операций ПОСЛЕ которых расположена финальная точка прыжка.

Посмотреть прохождение Human Resource Machine от Stalxer можно материалах нашего сайта:

Пожалуй, начнем!

16. Сверхположительность 8/34

Задача: отправьте каждую вещь из ВВОДА в ВЫВОД. Однако, если число отрицательное, сначала избавьтесь от минуса. Задачка заставляет вспомнить школьный курс математики и пораскинуть мозгами.

Как вы видите, я перенес вывод выше ввода. Сделано это для того, чтобы между выводом и вводом не было прыжка. Такой способ уменьшения количества шагов будет практически во всех последующих решениях.

Идем дальше!

35. Уничтожитель копий 16/166

Задача: отправьте всё из ВВОДА на ВЫВОД, за исключением тех значений, которые уже ВЫВОДИЛИСЬ. Избавьтесь от всех дубликатов.

Пришлось вынести один ввод за цикл. Поэкспериментируйте с логикой, возможно вам удастся уменьшить количество операций внеся этот ввод в общий цикл. Также можно отметить процесс получения нуля. Данный метод занимает столько же строк, сколько и копирование из другой ячейки, но позволяет использовать ячейку с первоначальным нулем для других целей.

36. Упорядочиватель 31/85

Задача: ввод содержит ровно два слова. Определите, какое из них было первым в алфавитном порядке и отправьте только его на вывод.

Здесь мы откажемся от идеи вывода обоих слов и остановимся на одном, а второе будем проверять по одной букве за раз. Если одинаково — на выход. Любая разница приводит к завершению проверки и выводу одного из слов до конца. Здесь и экономим шаги. И делаем прыжок в никуда после второго нуля на вводе.

И я не знаю зачем нам 10 в 24 ячейке. Просто ПОТОМУ ЧТО. Пусть будет wink И финальный уровень на сегодня:

40. Фабрика простоты 48/264

Задача: для каждого ВВОДИМОГО числа ВЫВЕДИТЕ его простые МНОЖИТЕЛИ в порядке возрастания.

А вот тут я, как и Stalxer прошел только на скорость. Мое лучшее решение занимает 29 команд, а надо 28. Поэтому я и решил увеличить скорость. Получилось ли у меня — решать вам.

Чтобы уменьшить количество шагов и не тратить их на сомнительные операции я, сначала, проверяю делимость числа на данный множитель. Если результат нескольких операций разности равен нулю, только тогда я повторяю процесс разности, но уже со счетчиком, чтобы найти частное от деления. На словах это может и сложно, но запустите алгоритм, сразу все поймете.

Также Stalxer подсказал мне интересную идею, которая строится на баге игры, а именно: любое число больше 4, которое не делится на 2 и 3 является простым. Такие числа подобрала команда разработчиков. Если бы на вход пришло, например, число 25, то данная программа уже бы не сработала. Скажем им спасибо)

На сегодня, пожалуй, все. Если честно, я оставил себе на десерт уровни 37, 39 и 41, так что я думаю, мы еще увидимся) Надеюсь, вам понравилось. Если у вас есть замечания или предложения — пишите их в комментариях или сразу мне в личку. Буду ждать)

Спасибо за внимание!

Администрация выражает благодарность пользователю feraklin за проявленный к интерес.

+2
Комментарии 3