Skip to content

Karpuzoff/interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Interview

В этом репозитории содержатся программы-решения тестовых заданий для разных собеседований.

Задача fraction

Условие:

Даны два числа: a и b. Найдите значение числа a/b, записанного в k-ичной системе счисления. Если a/b — периодическая дробь, то период следует заключить в скобки.

Пример входных данных:
1 2 8
1 12 10

Пример выходных данных:
0.4
0.08(3)

Замечания по моему решению:

Поддерживаются все системы счисления с двоичной по шестнадцатеричную включительно.

Функция '_convert_integer_to_string' переводит целое число в строку с представлением этого числа в нужной системе счисления.
Функция '_convert_float_part_to_string' переводит дробную часть числа, заданного числителем и знаменателем в строку с дробью, записанной в нужной системе счисления.

Задача polynom

Условие:

Дано выражение, содержащее скобки, операции сложения, вычитания, умножения, возведения в константную степень и одну переменную, например: (x - 5)(2x^3 + x(x^2 - 9)).

Представьте это выражение в развёрнутом виде, например: 3x^4 - 15x^3 - 9x^2 + 45x

Замечания по моему решению:

Используется рекурсия.
Функция '_parse_one_summand' вычленяет из строки, начиная с текущей позиции, одно слагаемое вида <ЗНАК><ЧИСЛО><Х><СТЕПЕНЬ>. Возвращает словарь {степень Х:множитель Х} и позицию в строке за этим слагаемым.
Функция '_parse_factor' идет по строке и складывает все найденные слагаемые в свой словарь вида {степень Х:множитель Х}. Натыкаясь на умножение или возведение в степерь текущего слагаемого, функция вызывает сама себя еще раз чтобы вызванная функция сформировала полностью словарь с многочленом, на который нужно умножить/возвести в степень текущее слагаемое.

Функции '_add', '_multiply' и '_power' складывают, умножают и возводят в степень соответственно один операнд-многочлен на другой операнд-многочлен. Функция '_power' умеет умножать лишь на константную степень.

Недостаток текущей реализации: функция '_power' не оптимальна и делает N умножений, а можно бы делать это с помощью log2(N) умножений.

About

Test programs for interview

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages