From ea19b85c2e3f1ac81139d144ac85cb4b167f1a63 Mon Sep 17 00:00:00 2001 From: Shaun Setlock Date: Mon, 20 Apr 2020 15:01:18 -0400 Subject: [PATCH] Automatic commit performed through alias... --- problems/005_problem.py | 99 +++++++---------------------------------- 1 file changed, 17 insertions(+), 82 deletions(-) diff --git a/problems/005_problem.py b/problems/005_problem.py index eed6921..0157088 100755 --- a/problems/005_problem.py +++ b/problems/005_problem.py @@ -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() \ No newline at end of file