🥑
Codding Problems Solutions
  • Introduction
  • CodeWars ⚔️
    • 🌝Beta
      • Count vowels
      • Who am I?
    • 🎒8 Kyu
      • Get the mean of an array
      • Multiply
      • SQL Basics: Mod
    • 🎁7 Kyu
      • 80's Kids #2: Help ALF Find His Spaceship
      • Complementary DNA
      • GROCERY STORE: Inventory
      • Get the Middle Character
      • Growth of a Population
      • Highest and Lowest
      • Indexed capitalization
      • Jaden Casing Strings
      • Moves in squared strings (I)
      • SQL with Harry Potter: Sorting Hat Comparators
      • SQL: Regex String to Table
      • Shortest Word
      • Sorted? yes? no? how?
      • String ends with?
      • Sum of odd numbers
      • Sum of the first nth term of Series
      • Two to One
      • What time is it?
    • 🎩6 Kyu
      • Are they the "same"?
      • Backspaces in string
      • Banker's Plan
      • Bouncing Balls
      • Count the smiley faces!
      • Counting Duplicates
      • Delete occurrences of an element if it occurs more than n times
      • Dubstep
      • Framed Reflection
      • Is a number prime?
      • Linked Lists - Length & Count
      • Lottery Ticket
      • Maze Runner
      • Mexican Wave
      • Number Format
      • Persistent Bugger.
      • Playing with digits
      • Replace With Alphabet Position
      • SQL Basics: Simple EXISTS
      • SQL Basics: Simple HAVING
      • SQL Basics: Simple IN
      • Statistics for an Athletic Association
      • The Deaf Rats of Hamelin
      • Tortoise racing
      • Unique In Order
      • Who likes it?
    • 🎯5 Kyu
      • Double Cola
      • Integers: Recreation One
      • Maximum subarray sum
      • Moving Zeros To The End
      • Pete, the baker
      • Pick peaks
      • Product of consecutive Fib numbers
      • Rot13
      • The Hunger Games - Zoo Disaster!
      • Using Window Functions To Get Top N per Group
      • Variadic Parameter Pack Count
    • 💍4 Kyu
      • Matrix Determinant
      • Memoized Log Cutting
      • Range Extraction
      • Roman Numerals Helper
      • Simple Fun #159: Middle Permutation
      • Strip Comments
      • Sum of Intervals
      • The observed PIN
      • Tuple sum
  • LeetCode 🍃
    • 👌Easy
      • Backspace String Compare
      • Binary Search
      • Binary Tree Tilt
      • Check If N and Its Double Exist
      • Climbing Stairs
      • Complement of Base 10 Integer
      • Consecutive Characters
      • Contains Duplicate
      • Convert Binary Number in a Linked List to Integer
      • Count and Say
      • Defanging an IP Address
      • Delete Node in a Linked List
      • Duplicate Zeros
      • Excel Sheet Column Number
      • Fibonacci Number
      • Find All Numbers Disappeared in an Array
      • Find Numbers with Even Number of Digits
      • Find the Difference
      • First Unique Character in a String
      • Fizz Buzz
      • Goat Latin
      • Height Checker
      • Implement strStr()
      • Intersection of Two Arrays II
      • Invert Binary Tree
      • Jewels and Stones
      • Kids With the Greatest Number of Candies
      • Length of Last Word
      • Longest Common Prefix
      • Longest Word in Dictionary
      • Max Consecutive Ones
      • Maximum Depth of Binary Tree
      • Merge Sorted Array
      • Merge Two Sorted Lists
      • Middle of the Linked List
      • Minimum Depth of Binary Tree
      • Move Zeroes
      • N-th Tribonacci Number
      • Number of 1 Bits
      • Number of Good Pairs
      • Number of Recent Calls
      • Palindrome Number
      • Pascal's Triangle II
      • Path Sum
      • Plus One
      • Power of Four
      • Power of Two
      • Remove Duplicates from Sorted Array
      • Remove Element
      • Replace Elements with Greatest Element on Right Side
      • Reverse Bits
      • Reverse Integer
      • Reverse String
      • Roman to Integer
      • Running Sum of 1d Array
      • Shuffle the Array
      • Single Number
      • Sort Array By Parity
      • Squares of a Sorted Array
      • Sum of Left Leaves
      • Sum of Root To Leaf Binary Numbers
      • Symmetric Tree
      • Tenth Line
      • Third Maximum Number
      • Transpose Matrix
      • Two Sum
      • Valid Anagram
      • Valid Mountain Array
      • Valid Parentheses
      • Word Pattern
      • XOR Operation in an Array
    • 👊Medium
      • All Elements in Two Binary Search Trees
      • Asteroid Collision
      • Binary Tree Inorder Traversal
      • Binary Tree Level Order Traversal
      • Binary Tree Postorder Traversal
      • Binary Tree Preorder Traversal
      • Bulls and Cows
      • Car Pooling
      • Combination Sum
      • Combination Sum III
      • Compare Version Numbers
      • Counting Bits
      • Course Schedule II
      • Design Linked List
      • Gas Station
      • House Robber
      • Image Overlap
      • Insert Interval
      • Insert into a Binary Search Tree
      • Insertion Sort List
      • K-diff Pairs in an Array
      • Kth Largest Element in an Array
      • Longest Substring Without Repeating Characters
      • Lowest Common Ancestor of a Binary Tree
      • Majority Element II
      • Maximum Difference Between Node and Ancestor
      • Maximum Product Subarray
      • Minimum Domino Rotations For Equal Row
      • Minimum Number of Arrows to Burst Balloons
      • Random Point in Non-overlapping Rectangles
      • Remove Covered Intervals
      • Rotate Array
      • Rotate Image
      • Rotate List
      • Rotting Oranges
      • Serialize and Deserialize BST
      • Sort List
      • String to Integer (atoi)
      • Teemo Attacking
      • Top K Frequent Elements
      • Valid Sudoku
    • 💪Hard
      • Median of Two Sorted Arrays
      • Parsing A Boolean Expression
      • Recover Binary Search Tree
      • Stone Game IV
Powered by GitBook
On this page
  • Banker's Plan
  • Example:
  • Some cases:
  • Solutions

Was this helpful?

  1. CodeWars ⚔️
  2. 6 Kyu

Banker's Plan

PreviousBackspaces in stringNextBouncing Balls

Last updated 4 years ago

Was this helpful?

John has some amount of money of which he wants to deposit a part f0 to the bank at the beginning of year 1. He wants to withdraw each year for his living an amount c0.

Here is his banker plan:

  • deposit f0 at beginning of year 1

  • his bank account has an interest rate of p percent per year, constant over the years

  • John can withdraw each year c0, taking it whenever he wants in the year; he must take account of an inflation of i percent per year in order to keep his quality of living. i is supposed to stay constant over the years.

  • all amounts f0..fn-1, c0..cn-1 are truncated by the bank to their integral part

  • Given f0, p, c0, i

    the banker guarantees that John will be able to go on that way until the nth year.

Example:

f0 = 100000, p = 1 percent, c0 = 2000, n = 15, i = 1 percent
beginning of year 2 -> f1 = 100000 + 0.01*100000 - 2000 = 99000;  c1 = c0 + c0*0.01 = 2020 (with inflation of previous year)
beginning of year 3 -> f2 =  99000 + 0.01*99000 - 2020  = 97970;  c2 = c1 + c1*0.01 = 2040.20 
(with inflation of previous year, truncated to 2040)
beginning of year 4 -> f3 =  97970 + 0.01*97970 - 2040  = 96909.7 (truncated to 96909); 
c3 = c2 + c2*0.01 = 2060.4 (with inflation of previous year, truncated to 2060)

and so on...

John wants to know if the banker's plan is right or wrong. Given parameters f0, p, c0, n, i build a function fortune which returns true if John can make a living until the nth year and false if it is not possible.

Some cases:

fortune(100000, 1, 2000, 15, 1) -> True
fortune(100000, 1, 10000, 10, 1) -> True
fortune(100000, 1, 9185, 12, 1) -> False

For the last case you can find below the amounts of his account at the beginning of each year:
100000, 91815, 83457, 74923, 66211, 57318, 48241, 38977, 29523, 19877, 10035, -5
f11 = -5 so he has no way to withdraw something for his living in year 12.

Note: Don't forget to convert the percent parameters as percentages in the body of your function: if a parameter percent is 2 you have to convert it to 0.02.

Solutions

💲 Shell

#!/bin/bash

fortune()
{
  f0=$1
  p=$2
  c0=$3
  n=$4
  i=$5
  echo  $1 $2 $3 $4 $5
  for (( c=0; c<n-1; c++ ))
  do
    f0=$(bc <<< "scale=0; $f0 + $f0/100*$p - $c0")
    c0=$(bc <<< "scale=0; $c0 + $c0/100*$i")
  done
  echo FINAL: $f0$
  if (( f0 <= 0 ))
  then
    echo false
  else
    echo true
  fi
}

fortune $1 $2 $3 $4 $5
🎩
Banker's Plan