Example #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)
Example #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
Example #3
0
File: 036.py Project: mnuman/euler
"""
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
Example #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))
Example #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'))
Example #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)
Example #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