Skip to content

Dmitry-rman/partsTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Субъективная оценка сложности 3
Предварительно 2 часа
Фактически 1.5 минут

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

Дан массив из N долей, представленных в виде N рациональных:
['1.5','3','6','1.5']
Задача
Написать программу, представляющую эти доли в процентном выражении с точностью
до трех знаков после запятой:
['12.500','25.000','50.000','12.500']
Ожидаемое решение
● программа на языке Swift 3/4 в виде одного исходного файла, без
использования сторонних библиотек, если можно - использовать Playground
● вычислительная сложность алгоритма и оценка необходимой памяти для его
выполнения,
● ограничения на размер входного массива, при котором алгоритм будет
выполняться разумное время (до 5 секунд, например).

Решение:
Выбран функциональный подход поскольку тут оперирование с массивом.
Скорость выполнения алгоритма зависит от железа. Чтобы уложиться в 5 секунд нужны замеры и статистика на больших объемах данных. Т.е. профилирование алгоритма и его возможная оптимизация в случае необходимости. На таком маленьком объеме прогнозируемый результат будет неверный поскольку часть времени займут различные вызовы и подготовки. Хотя, мне сложно представить такие реальные объемы данных для расчета долей одного объекта. Этим имеет смысл заниматься если с этого будет какой-то профит или обнаружится узкое место.
Вычислительная сложность линейная (в алгоритме нет вложенных циклов). В reduce скорее всего обычное суммирование последовательное элементов, в map преобразование, пробеганием по массиву.

Поскольку массив передается по значению в функцию, то размер в памяти примерно = 4 байт * Кол-во_входного_массива * 2 + 29
Вычислительная сложность линейная O(n) * k + n, где k, n константа

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages