def main(): assert lib.is_palindrome("А роза упала на лапу Азора") == True assert lib.is_palindrome("А роза упала на лапу Азора ") == True assert lib.is_palindrome("А роза не упала на лапу Азора ") == False assert lib.is_palindrome("Sum\ summus \mus") == True print(lib.is_palindrome("Sum summus mus"))
def euler_4(): palindromes = [] for i in range(999, 100, -1): for j in range(999, 100, -1): x = i * j if lib.is_palindrome(x): palindromes.append(x) return palindromes
def is_lychrel(n): i = 1 while i < 50: nx = n + lib.reverse(n) if lib.is_palindrome(nx): return False n = nx i += 1 return True
def is_palindrome_base_2(n): return lib.is_palindrome(bin(n)[2::])
def euler_36(m): solution = [x for x in range(1, m, 2) if lib.is_palindrome(x) and is_palindrome_base_2(x)] return sum(solution)
def test_palidrome(self): self.assertEqual(True, is_palindrome(101)) self.assertEqual(False, is_palindrome(1010)) self.assertEqual(False, is_palindrome(-121))
import sys from lib import is_palindrome largest = 0 lx = 0 ly = 0 for x in range(100, 999): for y in range(100, 999): if (is_palindrome(int(x * y))): if (largest < (int(x * y))): largest = (int(x * y)) lx = x ly = y print(largest)
""" Largest palindrome product Problem 4 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. """ from lib import is_palindrome min = 1000 max = 9999 largest = 0 for a in xrange(min, max): for b in xrange(min, max): n = a * b if (is_palindrome(n) and n > largest): print("palindrome %s x %s = %s" % (a, b, n)) largest = n print largest
def three_digit_palindromes(): for i in xrange(100, 1000): for j in xrange(100, 1000): if is_palindrome(i * j): yield i * j
#!/usr/bin/env python3 import lib N = 10**8 result = set() i = 1 while i < N**0.5: sm = i * i j = i + 1 sm += j**2 # must be at least two squares j += 1 while sm < N: if lib.is_palindrome(sm): print(i, '..', j, sm) result.add(sm) sm += j**2 j += 1 i += 1 print(sum(result))
def three_digit_palindromes(): for i in xrange(100, 1000): for j in xrange(100, 1000): if is_palindrome(i*j): yield i*j