mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-05 01:09:40 +08:00
Rename Project Euler directories and other dependent changes (#3300)
* Rename all Project Euler directories: Reason: The change was done to maintain consistency throughout the directory and to keep all directories in sorted order. Due to the above change, some config files had to be modified: 'problem_22` -> `problem_022` * Update scripts to pad zeroes in PE directories
This commit is contained in:
0
project_euler/problem_004/__init__.py
Normal file
0
project_euler/problem_004/__init__.py
Normal file
51
project_euler/problem_004/sol1.py
Normal file
51
project_euler/problem_004/sol1.py
Normal file
@ -0,0 +1,51 @@
|
||||
"""
|
||||
Problem:
|
||||
A palindromic number reads the same both ways. The largest palindrome made from
|
||||
the product of two 2-digit numbers is 9009 = 91 x 99.
|
||||
|
||||
Find the largest palindrome made from the product of two 3-digit numbers which
|
||||
is less than N.
|
||||
"""
|
||||
|
||||
|
||||
def solution(n: int = 998001) -> int:
|
||||
"""Returns the largest palindrome made from the product of two 3-digit
|
||||
numbers which is less than n.
|
||||
|
||||
>>> solution(20000)
|
||||
19591
|
||||
>>> solution(30000)
|
||||
29992
|
||||
>>> solution(40000)
|
||||
39893
|
||||
>>> solution(10000)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: That number is larger than our acceptable range.
|
||||
"""
|
||||
# fetches the next number
|
||||
for number in range(n - 1, 9999, -1):
|
||||
|
||||
# converts number into string.
|
||||
str_number = str(number)
|
||||
|
||||
# checks whether 'str_number' is a palindrome.
|
||||
if str_number == str_number[::-1]:
|
||||
|
||||
divisor = 999
|
||||
|
||||
# if 'number' is a product of two 3-digit numbers
|
||||
# then number is the answer otherwise fetch next number.
|
||||
while divisor != 99:
|
||||
if (number % divisor == 0) and (len(str(number // divisor)) == 3.0):
|
||||
return number
|
||||
divisor -= 1
|
||||
raise ValueError("That number is larger than our acceptable range.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
||||
|
||||
print(solution(int(input().strip())))
|
32
project_euler/problem_004/sol2.py
Normal file
32
project_euler/problem_004/sol2.py
Normal file
@ -0,0 +1,32 @@
|
||||
"""
|
||||
Problem:
|
||||
A palindromic number reads the same both ways. The largest palindrome made from
|
||||
the product of two 2-digit numbers is 9009 = 91 x 99.
|
||||
|
||||
Find the largest palindrome made from the product of two 3-digit numbers which
|
||||
is less than N.
|
||||
"""
|
||||
|
||||
|
||||
def solution(n: int = 998001) -> int:
|
||||
"""Returns the largest palindrome made from the product of two 3-digit
|
||||
numbers which is less than n.
|
||||
|
||||
>>> solution(20000)
|
||||
19591
|
||||
>>> solution(30000)
|
||||
29992
|
||||
>>> solution(40000)
|
||||
39893
|
||||
"""
|
||||
answer = 0
|
||||
for i in range(999, 99, -1): # 3 digit numbers range from 999 down to 100
|
||||
for j in range(999, 99, -1):
|
||||
product_string = str(i * j)
|
||||
if product_string == product_string[::-1] and i * j < n:
|
||||
answer = max(answer, i * j)
|
||||
return answer
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(solution(int(input().strip())))
|
Reference in New Issue
Block a user