[personal profile] finesoul
Interesting logical task was on interview two years ago.
There are two trains on the one path. How far one from another is unknown, but it is known that there is only station on this road in between. On our command the same program (algorithm, procedure) is loaded to the control unit of each train and they begin to execute commands. Train control systems are very primitive - they understand only 4 instructions:
1) MF - move forward
2) MB - move backward
3) IF Station - If the train at the station then execute the following command otherwise skip the following command
4) GOTO (the step number) - continue the program from the specified step.
Program is a sequence of steps. For example on executing following program trains will move around the same place (forward <-> back)
Step 1: MF
Step 2: MB
Step 3: GOTO Step 1
Executing of each instructions takes the same time (let it be 1 second)..

Objective # 1 : Make a train bump in minimal time with the smallest program. The direction MF (forward) is the same for both train.

Objective # 2: Make a train bump in minimal time with the smallest program. If the direction of MF (forward) for trains can mismatch. But we have improved the control unit of our trains. There are two new instructions:
5) C++ - Increase counter value by 1. The value after loading the program (default) is 0.
6) RC - Repeat the following command as many times as a value in the counter. For each interaction we spend 2 second.



Интересная логическая задача была на интервью два года назад.
На одном пути стоят два поезда. Насколько они удалены друг от друга неизвестно, но точно известно, что единственная на этой дороге станция находится между ними. По нашей команде в поезда загрузится одна и та же программа(алгоритм, порядок действий) и они начнут его выполнять. Система управления поездом очень примитивная - в ней всего 4 команды:
1)MF - двигаться вперед
2)MB - двигаться назад
3)IF Station - Если поезд на станции то выполнить следующую команду иначе - пропустить следующую команду
4)GOTO (номер шага программы) - продолжить исполнение программы с указанного шага.
Программа - последовательность шагов. Например по следующей программе поезда будут ездить на одном месте (вперед <-> назад)
шаг1: MF
шаг2: MB
шаг3: GOTO шаг1
На выполнение каждой команды(шага) тратится одинаковое время (допустим 1 с.).

Задача#1: Обеспечьте столкновение поездов за минимальное время программой наименьшего размера. Если известно, что направление MF (вперед) у обоих поездов совпадает.

Задача#2: Обеспечьте столкновение поездов за минимальное время программой наименьшего размера. Если направление MF (вперед) поездов может не совпадать. Но мы усовершенствовали систему управления нашими поездами. Появились две новые инструкции:
5) С++ - Увеличить значение счетчика на 1. Значение после загрузки программы(начальное) - 0.
6) RC - Повторить следующую команду столько же раз какое значение в счетчике. На каждое повторение тратится 2с.

Все комментарии к этому посту прячутся. Открываю пока только неправильные

Лютий 2022

Н П В С Ч П С
  12345
6789101112
13141516171819
202122232425 26
2728     

За стиль дякую

Створено з Dreamwidth Studios
Сторінка створена 2026-Лют-13, П'ятниця 07:12