Итак, вы - офисный работник. Вы получаете ящики с цифрами и буквами на входе. Я представляю, что это посылки с Алиэкспресс :), хоть это и не совсем корректно. Ведь посылки нельзя, например, вычитать друг из друга. После некоторых преобразований, которые реализуются в ячейках буферной зоны (на складе Почты России :)) за счет последовательности определенных команд, вы перемещаете их на выход (отдаете счастливому получателю).
(Продвигаемся по карьерной лестнице)
С каждым уровнем начальник подкидывает вам разные условия, которые нужно выполнять в точности. Например, вывести только ящики с числами, не равными нулю. Или перед выводом умножить каждое число на ящике на 40. Казалось бы, задачи весьма простые. Но вся проблема здесь в ограниченном количестве доступных операторов. Как умножать числа, если у вас нет оператора для умножения ? А примерно так.
(Проходим уровень Сороконожка)
Ужас, да и только. На php, с которым я, в основном, работаю, данная задача решается в три строки:
$input = array(2, 3, 7, -4, 12, 0);
foreach($input as $value)
echo $value * 40 . ' ';
foreach($input as $value)
echo $value * 40 . ' ';
Но так даже интереснее. Поэтому данная игра - отличная возможность попробовать свои силы в решении простейших задач неочевидными способами. Для этого у вас имеется только все самое необходимое. Например, здесь есть жестокое ограничение по операторам сравнения. Мы можем сравнивать число только с нулем или с отрицательным значением. Я был в шоке :) То есть, например, чтобы получить на выходе число, по значению большее, чем предыдущее, нельзя эти два числа просто сравнить. Нужно отнять от первого числа второе и в случае получения отрицательного результата отдать второе число на выход, а в случае получения положительного результата - первое. А ведь это еще и надо реализовать с помощью операторов. Да уж, на таких задачах «скрипели» даже мои мозги :).
(Проходим уровень Максимизатор)
Еще меня несколько напряг оператор JUMP, по принципу работающий, как GOTO (привет, Бейсик), который ненавидит большинство программистов. Потому что с ним программа становится намного запутаннее. По себе помню, как мне было тяжело переходить с Бейсика на Паскаль. Именно по причине того, что в Бейсике я использовал GOTO постоянно, а в Паскале он хоть и есть, но реализуется с помощью меток и, вообще, сильно не приветствуется. Только отвык и вот снова ... :).
Очень понравилось то, что решать задачи в Human Resource Machine можно несколькими способами. Но, конечно, нужно стараться использовать как можно меньше операторов. Например, нам нужно вывести каждое взятое число вплоть до нуля. То есть отнимая единичку, если оно положительное и прибавляя, если отрицательное. Вот пример рабочей, но плохо оптимизированной программы.
(Уровень Отсчёт - плохой код)
А это я программу уже основательно переделал. На это ушло довольно много времени. Но я люблю, чтобы все было красиво :).
(Уровень Отсчёт - хороший код)
Сын (10 лет) игру воспринял сначала с большим энтузиазмом. И буквально за 40 минут практически самостоятельно дошел до 14 уровня. Там у него возникли проблемы, после чего он на игру забил. Все-таки визуальная среда программирования типа Scratch ему пока намного интереснее (он там даже написал пару игрушек). Ну а я с удовольствием продолжаю играть в Human Resource Machine, чего и вам советую.
Плюсы: Оригинальная идея игры. Перевод на русский язык.
Минусы: Довольно высокий ценник.
Выводы: Отличная игра для начинающих и продвинутых программистов.
Видео геймплея из игры Human Resource Machine для iPad