Automatic commit performed through alias...
This commit is contained in:
@@ -1,100 +1,35 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Problem 4:
|
||||
# Problem 5:
|
||||
#
|
||||
# A palindromic number reads the same both ways.
|
||||
# The largest palindrome made from the product
|
||||
# of two 2-digit numbers is 9009 = 91 × 99.
|
||||
#
|
||||
# Find the largest palindrome made from the
|
||||
# product of two 3-digit numbers.
|
||||
# 2520 is the smallest number that can
|
||||
# be divided by each of the numbers
|
||||
# from 1 to 10 without any remainder.
|
||||
#
|
||||
# What is the smallest positive number
|
||||
# that is evenly divisible by all of the
|
||||
# numbers from 1 to 20?
|
||||
#
|
||||
|
||||
import decorators
|
||||
import time
|
||||
import decorators # Typically imported to compute execution duration of functions.
|
||||
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
|
||||
integer is a palindrome.
|
||||
Returns modulus of two passed integers.
|
||||
|
||||
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
|
||||
def main():
|
||||
|
||||
# Define the problem inputs...
|
||||
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)))
|
||||
print("The largest palindrome number which is a product of two numbers of length {} is {} ... ".format("foo","foo"))
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user