From 3d8dbc01dcf5f5a63cf15438df3ede1cedb03c6d Mon Sep 17 00:00:00 2001 From: Matthew Printz Date: Wed, 15 Feb 2017 21:43:13 -0600 Subject: [PATCH] Update 5kyu_Ratio_of_Bouncy_Numbers.py --- 5kyu_Ratio_of_Bouncy_Numbers.py | 35 +++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/5kyu_Ratio_of_Bouncy_Numbers.py b/5kyu_Ratio_of_Bouncy_Numbers.py index c0b15cf..676d0cc 100644 --- a/5kyu_Ratio_of_Bouncy_Numbers.py +++ b/5kyu_Ratio_of_Bouncy_Numbers.py @@ -31,39 +31,32 @@ """ +from itertools import count -def b_eval(val): +def is_bouncy(val): str_num = str(val) - str_eval = [0, 0] - for n in range(1, len(str_num)): - if str_num[n] > str_num[n-1]: - str_eval[0] = 1 - elif str_num[n] < str_num[n - 1]: - str_eval[1] = 1 - else: - pass - - if sum(str_eval) > 1: + up, down = False, False + for n in range(len(str_num) - 1): + if str_num[n] > str_num[n + 1]: + down = True + elif str_num[n] < str_num[n + 1]: + up = True + + if up and down: return True return False -def bouncy_ratio(percent): - i = 0 +def bouncy_ratio(percent): bouncies = 0 - while True: - i += 1 - if b_eval(i) == True: + for i in count(101): + if is_bouncy(i): bouncies += 1 - if float(bouncies) / i >= percent: return i - - - print(bouncy_ratio(.9)) """ @@ -73,4 +66,4 @@ def bouncy_ratio(percent): Test.assert_equals(bouncy_ratio(0.5), 538, 'A 50% bouncy ratio should be reached by 538') Test.assert_equals(bouncy_ratio(0.75), 3088, 'A 10% bouncy ratio should be reached by 3088') Test.assert_equals(bouncy_ratio(0.9), 21780, 'A 90% bouncy ratio should be reached by 21780') -""" \ No newline at end of file +"""