33
44
55def largest (min_factor , max_factor ):
6- return get_extreme_palindrome_with_factors (max_factor , min_factor , " largest" )
6+ return get_extreme_palindrome_with_factors (max_factor , min_factor , ' largest' )
77
88
99def smallest (max_factor , min_factor ):
10- return get_extreme_palindrome_with_factors (max_factor , min_factor , " smallest" )
10+ return get_extreme_palindrome_with_factors (max_factor , min_factor , ' smallest' )
1111
1212
1313def get_extreme_palindrome_with_factors (max_factor , min_factor , extreme ):
14- palindromes_found = palindromes (max_factor , min_factor ,
15- reverse = (extreme == "largest" ))
14+ palindromes_found = palindromes (max_factor , min_factor , reverse = (extreme == 'largest' ))
1615 factor_pairs = None
1716 for palindrome in palindromes_found :
1817 factor_pairs = ((factor , palindrome // factor )
@@ -30,12 +29,12 @@ def get_extreme_palindrome_with_factors(max_factor, min_factor, extreme):
3029
3130
3231def reverse_num (number ):
33- reversed = 0
32+ reversed_nums = 0
3433 while number > 0 :
35- reversed *= 10
36- reversed += (number % 10 )
34+ reversed_nums *= 10
35+ reversed_nums += (number % 10 )
3736 number //= 10
38- return reversed
37+ return reversed_nums
3938
4039
4140def num_digits (number ):
@@ -50,31 +49,31 @@ def palindromes(max_factor, min_factor, reverse=False):
5049 most of the palindromes just to find the one it needs.
5150 """
5251 if max_factor < min_factor :
53- raise ValueError (" min must be <= max" )
52+ raise ValueError (' min must be <= max' )
5453
5554 minimum = min_factor ** 2
5655 maximum = max_factor ** 2
5756
58- def gen_palindromes_of_length (num_digits , reverse = reverse ):
57+ def gen_palindromes_of_length (digit_count , reverse = reverse ):
5958 """Generates all palindromes with `nd` number of digits that are
6059 within the desired range.
6160 Again, if `reverse` is True, the palindromes are generated in
6261 reverse order.
6362 """
64- even_nd = (num_digits % 2 == 0 )
63+ even_nd = (digit_count % 2 == 0 )
6564
66- min_left_half = max (10 ** (int (ceil (num_digits / 2 )) - 1 ),
67- minimum // (10 ** (num_digits // 2 )))
68- max_left_half = min ((10 ** int (ceil (num_digits / 2 ))) - 1 ,
69- maximum // (10 ** (num_digits // 2 )))
65+ min_left_half = max (10 ** (int (ceil (digit_count / 2 )) - 1 ),
66+ minimum // (10 ** (digit_count // 2 )))
67+ max_left_half = min ((10 ** int (ceil (digit_count / 2 ))) - 1 ,
68+ maximum // (10 ** (digit_count // 2 )))
7069
7170 current_left_half = min_left_half if not reverse else max_left_half
7271
7372 def make_palindrome (left_half , even_nd = False ):
7473 right_half = (reverse_num (left_half )
7574 if even_nd
7675 else reverse_num (left_half // 10 ))
77- return (left_half * (10 ** (num_digits // 2 ))) + right_half
76+ return (left_half * (10 ** (digit_count // 2 ))) + right_half
7877
7978 if not reverse :
8079 while current_left_half <= max_left_half :
0 commit comments