
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find Maximum Score from Removing Stones in Python
Suppose we have three values a, b and c. We are playing a solitaire game with three piles of stones whose sizes are a, b, and c respectively. Each turn the player selects two different non-empty piles, take one stone from each, and add 1 point to his score. The game ends when there are fewer than two non-empty piles. So we have to find the maximum score you can get.
So, if the input is like a = 4, b = 4, c = 6, then the output will be 7 because the initial state is (4, 4, 6), then we can follow these steps −
Select from 1st and 2nd piles so current state is (3, 3, 6)
Select from 1st and 3rd piles so current state is (2, 3, 5)
Select from 1st and 3rd piles so current state is (1, 3, 4)
Select from 1st and 3rd piles so current state is (0, 3, 3)
Select from 2nd and 3rd piles so current state is (0, 2, 2)
Select from 2nd and 3rd piles so current state is (0, 1, 1)
Select from 2nd and 3rd piles so current state is (0, 0, 0)
And finally there are fewer than two non-empty piles, so the game ends.
To solve this, we will follow these steps −
minimum := minimum of a, b and c
maximum := maximum of a, b and c
left := a + b + c - maximum - minimum
-
if maximum-left <= minimum, then
return minimum + left - quotient of (1 + minimum - (maximum-left))/2
return minimum + (minimum of (maximum-minimum) and left)
Example
Let us see the following implementation to get better understanding −
def solve(a, b, c): minimum = min(a,b,c) maximum = max(a,b,c) left = a+b+c-maximum-minimum if maximum-left<=minimum: return minimum + left-(1+minimum-(maximum-left))//2 return minimum + min(maximum-minimum,left) a = 4 b = 4 c = 6 print(solve(a, b, c))
Input
4, 4, 6
Output
7