コード例 #1
0
ファイル: euler_test.py プロジェクト: vinsonlee/projecteuler
 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
ファイル: 036.py プロジェクト: 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
コード例 #4
0
ファイル: 125.py プロジェクト: vinsonlee/projecteuler
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
ファイル: test_ispalindrome.py プロジェクト: oshea00/euler
 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
ファイル: 348.py プロジェクト: vinsonlee/projecteuler
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
ファイル: 4.py プロジェクト: vinsonlee/projecteuler
#!/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