Automatic commit performed through alias...

This commit is contained in:
Shaun Setlock
2020-04-20 15:01:18 -04:00
parent 8a464cf5a0
commit ea19b85c2e

View File

@@ -1,100 +1,35 @@
#!/usr/bin/env python #!/usr/bin/env python
# Problem 4: # Problem 5:
# #
# A palindromic number reads the same both ways. # 2520 is the smallest number that can
# The largest palindrome made from the product # be divided by each of the numbers
# of two 2-digit numbers is 9009 = 91 × 99. # from 1 to 10 without any remainder.
# #
# Find the largest palindrome made from the # What is the smallest positive number
# product of two 3-digit numbers. # that is evenly divisible by all of the
# numbers from 1 to 20?
# #
import decorators import decorators # Typically imported to compute execution duration of functions.
import time import time # Typically imported for sleep function, to slow down execution in terminal.
def is_palindrome(candidate): def compute_modulus(divisor,dividend):
""" """
Returns a boolean to confirm if the passed Returns modulus of two passed integers.
integer is a palindrome.
is_palindrome(candidate) is_palindrome(divisor, dividend)
param 'candidate': Integer to test for palindrom-iness. param 'divisor': Integer to be divided by dividend.
param 'dividend': Integer dividing the divisor.
""" """
pass
# Convert maximum candidate to a list ...
listed_candidate = [int(i) for i in str(candidate)]
flipped_candidate = [int(i) for i in str(candidate)]
# Determine length of maximum candidate, and manipulate.
num_digits = listed_candidate.__len__()
digit_flips = int(num_digits/2)
for i in range(1,digit_flips):
flipped_candidate[-i-1] = flipped_candidate[i]
flipped_candidate[-1] = flipped_candidate[0]
# Compare if the flipped version and the original
# candidate are identical.
# The function returns this test result...
if listed_candidate == flipped_candidate:
return True
else:
return False
@decorators.function_timer @decorators.function_timer
def main(): def main():
# Define the problem inputs... print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format("foo","foo"))
factor_length = 3
# Calculate intermediate inputs...
max_factor = 10**(factor_length)-1
product_of_factors = max_factor * max_factor # Maximum candidate for palindrome test.
# Initialize loop parameters...
n = max_factor
m = max_factor
n_has_token = False
test_passed = False
palindrome_list=[]
while (n*m)>1:
# Loop over all possible pairs of
# integers, testing for "palindrom-iness" ...
print("{} * {} = {}".format(n,m,n*m))
test_passed = is_palindrome(n*m)
if test_passed:
palindrome_list.append(n*m)
if n_has_token:
n -= 1
if n ==0:
n_has_token = False
n = m-1
if not n_has_token:
m -= 1
if m ==1:
n_has_token = True
m = n-1
if not test_passed:
if n_has_token:
n -= 1
if n ==0:
n_has_token = False
n = m-1
if not n_has_token:
m -= 1
if m ==1:
n_has_token = True
m = n-1
print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format(factor_length,max(palindrome_list)))
main() main()