Минимальный Платеж для Кредитной Карты с помощью Бинарного поиска

2. Katas

Проблема:

Написать программу, которая считает Минимальный Платеж для Кредитной Карте. Который погасит непогашенный остаток, если его платить каждый месяц на протяжение года.С помощью Бинарного поиск

Примечание: Минимальный Платеж это фиксированная сумма на протяжение всех 12 месяцев.

Для этого дается две переменные на вход в функцию:

  1. outStandingBalance - непогашенный остаток на кредитной карте.
  2. yearlyPercentRate - годовая процентная ставка.

Примечание: Если вы хотите узнать, как посчитать непогашенный остаток после одного месяца, смотрите в разделе ниже Пример.

Задача:

Написать функцию, которая возвращает такую строку: "Минимальный Платеж каждый месяц составляет: b | Попыток использовано: c", где b - непогашенный остаток(округлен до второй цифры после запятой), который вернула функция и c - количество попыток, которые использовала функция для поиска минимального платежа.

Пример:

Чтобы найти непогашенный остаток после одного месяца, нужно придерживаться такого алгоритма:

  1. Считаем месячную процентную ставку:
    monthlyPercentRate = yearlyPersentRate/12
  2. Считаем нижнюю и верхнюю границу:
    lowerPay = start_balance/12
    upperPay = (start_balance * (1 + monthlyPercentRate)**12)/12.0
  3. Считаем минимальный платеж, который можем сделать в месяце:
    minPay = (upperPay + lowerPay)/2
  4. Считаем непогашенный остаток, одним действием. Развернутое решение смотрите в 2.Katas (Little Python), ерейдя по ссылку:
    utStandingBalance = outStandingBalance - minPay + ((outStandingBalance - minPay) * monthlyPercentRate)

Примечание: Основная часть алгоритма Бинарного поиска, остается за вами.

Данные для проверки:

creditCardMinPay_BS - название функции
  1. creditCardMinPay_BS(320000,0.2) --> "Минимальный Платеж каждый месяц составляет: 29157.09 | Попыток использовано: 17"
  2. creditCardMinPay_BS(999999,0.18) --> "Минимальный Платеж каждый месяц составляет: 90325.02 | Попыток использовано: 22"
  3. creditCardMinPay_BS(999999,0.18) --> "Минимальный Платеж каждый месяц составляет: 32809.62 | Попыток использовано: 20"
где "-->" означает после запуска программы

Примечание:: Для сравнение можете запустить одно из значений с помощью программы, которую мы делали в 2.Katas (Median Python). Алгоритмы это сила?

Что дальше ?:

Программа не выходит или работает не совсем точно, перейдите по ссылке solution и помотрите объяснение к решению проблемы, это вам поможет.

Если у вас все вышло, можете перейти по ссылке solution и сравнить свое решение с тем которое там есть.

Если ваше решение не совпадает с моим решение, то я за вас очень рад. Поделитесь им со мной, я буду вам очень боагодарен и тогда я добавлю его в папку solution. Как добавить свое решение смотрите тут.

Посмотрте решение или перейдите на Github страницу :