Задача: «упростите код»

Есть целый класс задач, состоящих не в том, что «напишите свой код для того чтобы…», а так: «перед вами готовый код — упростите и укоротите его». Мне такого рода задачу в качестве теста по вакансии прислала крупная израильская фирма. Это очень интересный класс задач, который:

  • учит понимать чужой код;
  • требует тонкого знания синтаксиса для упрощения.

Для практического программиста такие задачи ценнее, чем просто самому написать … Hello World! Интересно то, что код задачи нужно бы упростить почти не разбираясь что этот код должен делать — по правилам формального синтаксиса C++.

В данной задаче:
func1() — в точности исходный код функции, который нужно упростить;
func2() — то что у меня получилось после упрощения;
— … а всё остальное (main) — это тест сравнения выполнения 2-х вариантов на нескольких примерах.


Результат выполнения:

с++ задачи и решение, исходный код, практика программирования на c++

Рассылка новых уроков по программированию:


Согласен получать уведомления от purecodecpp.com на мой e-mail

Olej

Об авторе Olej

Стаж практических программных разработок около 40 лет. Преподаватель международной софтверной компании Global Logic. Постоянный автор публикаций IBM Developer Works. Научный редактор книжного издательства компьютерной литературы "Символ-Плюс", Санкт-Петербург.

Задача: «упростите код»: 3 комментария

  1. Ну и результат выполнения теста тогда нужно показать для полноты картины:

  2. Кстати…
    Наши израильские друзья считают такое решение неверным — они мечтали о чём-то более кошерном ;-)

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

    Simplify the implementation below as much as you can.
    Even better if you can also improve performance as part of the simplification!
    FYI: This code is over 35 lines and over 300 tokens, but it can be written in 5 lines and in less than 60 tokens.

    Тестирование показывает полную эквивалентность func1() и func2().

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

  3. Задача состоит в оптимизации кода, ваше же решение обычное переписывание предложенного алгоритма с целью уменьшения количества строк.

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>