Приложение 1. Разбор задачи для собеседования с программистами

Приложение 1. Разбор задачи для собеседования с программистами

Итак, разбор задачи.

Тест проверяет достижения соискателя скорее по п. 2 перечня требований, приведенного перед задачей, чем по п. 3 (если вы, конечно, еще помните, что там написано) Одновременно вы получаете представление об аккуратности кода и «доверчивости» при получении исходных данных. Вот решение, которое я хотел увидеть, без заморочек синтаксисом языка.

Комментарий: если поезда могут приходить раньше или опаздывать более чем на половину суток, то для решения задачи необходимы дата фактического прибытия и прибытия по расписанию. Далее задача решается в предположении, что время опережения и опоздания не превосходит 12 часов.

ЕСЛИ НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_РАСП) ИЛИ

НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_ФАКТ)

ТО ВЫЙТИ.

Комментарий: Я бы удовлетворился и без описания функции КОНТРОЛЬ_НА_ВРЕМЯ.

РАЗНОСТЬ:= МИНУТЫ (ВРЕМЯ_РАСП) – МИНУТЫ (ВРЕМЯ_ФАКТ);

Комментарий: 1440 = 24 х 60 – количество минут в сутках, а 720 – в полусутках.

ЕСЛИ РАЗНОСТЬ <= —720

ТО РАЗНОСТЬ:= РАЗНОСТЬ + 1440

ИНАЧЕ ЕСЛИ РАЗНОСТЬ >= 720

ТО РАЗНОСТЬ:= РАЗНОСТЬ – 1440;

ЕСЛИ РАЗНОСТЬ = 0

ТО ПЕЧАТАТЬ («ПРИШЕЛ ВОВРЕМЯ»)

ИНАЧЕ ЕСЛИ РАЗНОСТЬ > 0

ТО ВЫВЕСТИ («ПРИШЕЛ РАНЬШЕ НА», ЧАС_МИН

(РАЗНОСТЬ))

ИНАЧЕ ЕСЛИ РАЗНОСТЬ < 0

ТО ВЫВЕСТИ («ОПОЗДАЛ НА», ЧАС_МИН (—РАЗНОСТЬ))

Если испытуемый не заметил, что поезд, прибывающий по расписанию в 0.05, а фактически прибывший в 23.55, не опоздал на 23 часа 50 минут, а приехал раньше на 10 минут, то это очень грустно. Если увидел, но не сообщил вам (устно или в комментарии к тексту), что решение не работает при расхождениях с расписанием более полусуток, то это просто грустно. Кодировать по блок-схемам последние сорок лет уже не требуется, а на что еще такой годится?

Наиболее поразившей меня за последнее время реакцией на эту задачу было удивленное «Как нет дат в исходных данных? Без дат вообще нельзя решить, без дат нет метода!». Я сразу почувствовал себя таким старым… Правда, как-то мы без методов обходились, поскольку объектно-ориентированных языков тогда еще не было.

Данный текст является ознакомительным фрагментом.