Пример #1
0
 def test_ispalindrome(self):
     self.assertEqual(euler.ispalindrome(1), True)
     self.assertEqual(euler.ispalindrome(11), True)
     self.assertEqual(euler.ispalindrome(12), False)
     self.assertEqual(euler.ispalindrome(111), True)
     self.assertEqual(euler.ispalindrome(123), False)
     self.assertEqual(euler.ispalindrome(1221), True)
     self.assertEqual(euler.ispalindrome(1231), False)
Пример #2
0
def biggestPal():
    i = 100  # Smallest 3 digit number
    j = 100  # Largest 3 digit number
    maxp = 0

    # all products of 3 digit numbers
    while i < 1000:
        while j < 1000:
            n = i * j
            if euler.ispalindrome(n):
                maxp = max(maxp, n)
            j += 1
        i += 1
        j = 0
    return maxp
Пример #3
0
"""
The decimal number, 585 = 1001001001 (binary), is palindromic in both bases.

Find the sum of all numbers, less than one million, which are palindromic
in base 10 and base 2.

(Please note that the palindromic number, in either base,
may not include leading zeros.)
"""
from euler import ispalindrome
sum = 0
for n in range(1,1000000):
    if ispalindrome(str(n)) and ispalindrome( bin(n)[2:].lstrip('0')):
        # print "Palindrome: " + str(n) + " --bin-- " + bin(n)
        sum += n
print sum
Пример #4
0
import math

import euler

N = 10 ** 8

sums = []
for i in xrange(1, int(math.sqrt(N))):
    for j in xrange(i + 1, int(math.sqrt(N)) + 1):
        s = sum([x ** 2 for x in xrange(i, j + 1)])

        if s >= N:
            break

        if euler.ispalindrome(s):
            sums.append(s)

print sum(set(sums))
Пример #5
0
 def test_ispalindromeSingleDigit(self):
     self.assertTrue(ispalindrome(0))
     self.assertTrue(ispalindrome(1))
     self.assertTrue(ispalindrome(2))
     self.assertTrue(ispalindrome(3))
     self.assertTrue(ispalindrome(4))
     self.assertTrue(ispalindrome(5))
     self.assertTrue(ispalindrome(6))
     self.assertTrue(ispalindrome(7))
     self.assertTrue(ispalindrome(8))
     self.assertTrue(ispalindrome(9))
     self.assertFalse(ispalindrome(10))
     self.assertFalse(ispalindrome('01101'))
     self.assertFalse(ispalindrome('1110'))
     self.assertTrue(ispalindrome('31313'))
     self.assertTrue(ispalindrome('0110'))
     self.assertTrue(ispalindrome('010'))
     self.assertTrue(ispalindrome('11'))
     self.assertTrue(ispalindrome('121'))
Пример #6
0
import collections
import math

import euler

# Trial and error until we find the 5 numbers.
N = 10 ** 9

I = int(round(math.sqrt(N)))
J = int(round(N ** (1 / 3.0)))

S = collections.defaultdict(list)

# Generate all combinations of i^2 + j^3 <= N.
# Save away all the palindromes.
for i in range(2, I + 1):
    for j in range(2, J + 1):
        n = i ** 2 + j ** 3
        if euler.ispalindrome(n):
            S[n].append((i, j))

palindromes = []

for key in S.keys():
    if len(S[key]) == 4:
        palindromes.append(key)

assert len(palindromes) == 5
print sum(palindromes)
Пример #7
0
#!/bin/env

import euler

largest_palindrome = 0

for i in range(100, 1000):
    for j in range(100, 1000):
        product = i * j
        if product > largest_palindrome and euler.ispalindrome(product):
            largest_palindrome = product

print largest_palindrome