コード例 #1
0
ファイル: 055.py プロジェクト: jeffreyhandler/project-euler
 def is_lychrel(n):
     count = 1
     n += int(str(n)[::-1])
     while not is_palindrome(n) and count < 50:
         n += int(str(n)[::-1])
         count += 1
     return not is_palindrome(n)
コード例 #2
0
def largest_palindrome_product(minimum=100, maximum=999):
    """
    exhaustively finds the largest palindromic product in a range

    minimum, maximum (int): defines range, inclusive
    returns (int): solution
    """
    stub = Stub()
    #stub.start()

    candidate_solution = None
    palindrome_products = []
    candidate_factors = [None, None]

    for i in range(maximum, minimum-1, -1):
        for j in range(i, minimum-1, -1):
            product = i*j
            if is_palindrome(product):
                palindrome_products.append(product)
                if product > candidate_solution:
                    candidate_solution = product
                    candidate_factors = [i, j]

    stub.msg(candidate_factors, "factors")
    return candidate_solution
コード例 #3
0
def is_lychrel(n):
    i = 0
    while i < 50:
        n += int(''.join(list(reversed(digits(n)))))
        if is_palindrome(digits(n)):
            return False
        i += 1
    return True
コード例 #4
0
def main():
    count = 0
    for i in range(1, 10000):
        for _ in range(50):
            i = step(i)
            if euler.is_palindrome(i):
                break
        else:
            count += 1
    return count
コード例 #5
0
ファイル: problem4.py プロジェクト: SanyaShilov/ProjectEuler
def main():
    maximum = 0
    for i in range(10**DIGITS - 1, 10**(DIGITS - 1) - 1, -1):
        for j in range(10**DIGITS - 1, i - 1, -1):
            prod = i * j
            if prod > maximum:
                if euler.is_palindrome(prod):
                    maximum = prod
            else:
                break
    return maximum
コード例 #6
0
def main():
    s = set()
    for b in range(1, 10000):
        temp = b * (b + 1) * (2 * b + 1)
        for a in range(b - 2, -1, -1):
            result = (temp - a * (a + 1) * (2 * a + 1)) // 6
            if result > LIMIT:
                break
            if euler.is_palindrome(result):
                s.add(result)
    return sum(s)
コード例 #7
0
ファイル: 348.py プロジェクト: jeffreyhandler/project-euler
def compute():
    ways = {}

    for i in range(1, int(limit ** 0.5)):
        for j in range(1, int(limit ** 0.33)):
            temp = i ** 2 + j ** 3
            if is_palindrome(temp):
                if temp in ways:
                    ways[temp] += 1
                else:
                    ways[temp] = 1

    return sum([w for w in ways if ways[w] == 4][:5])
コード例 #8
0
ファイル: p36.py プロジェクト: jalane76/project-euler
def main():
    total = 0
    for n in range(1000000):
        if euler.is_palindrome(str(n)) and euler.is_palindrome("{0:b}".format(n)):
            total += n
    print(total)
コード例 #9
0
ファイル: euler-0036.py プロジェクト: nasa9084/project-euler
# -*- coding:utf-8 -*-
"""Project Euler problem 36"""
from euler import is_palindrome

sm = 0
for i in range(1000000):
    if is_palindrome(str(i)) and is_palindrome(str(bin(i))[2:]):
        sm += i
print("Answer: " + str(sm))
コード例 #10
0
ファイル: 004.py プロジェクト: jaredks/euler
from euler import is_palindrome
print max(i * j for i in xrange(999, 900, -1) for j in xrange(999, i, -1)
          if is_palindrome(i * j))
コード例 #11
0
# coding=utf-8

'''
Problem 36
31 January 2003

The decimal number, 585 = 10010010012 (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.)
'''

import euler
print sum(n for n in range(1, 10**6+1) if (euler.is_palindrome(n) and euler.is_palindrome(bin(n)[2:])))
コード例 #12
0
ファイル: euler004.py プロジェクト: dshirle7/euler
'''

from euler import is_palindrome

multiples = set()

# Creating the set of all 3-digit multiples.
for factor1 in range(100, 1000):
	# For the second loop, we do not need to search and number lower
	# than the number we're currently on in the first loop. We have already
	# multiplied those two in a previous loop.
	# E.g. when factor1 = 102, we do not need to multiply it by factor2 = 101
	# because when factor1 = 101, there was an interation when factor2 = 102.
	# 102 * 101 = 101 * 102
    for factor2 in range(factor1, 1000):
        multiples.add(factor1 * factor2)


smallest_multiple = 100 * 100
largest_multiple = 999 * 999
palindromes = set()

# Creating the set of all palindromes.
for number in range(smallest_multiple, largest_multiple):
    if is_palindrome(number) == True:
    	palindromes.add(number)

both = multiples.intersection(palindromes)
answer = max(both)

print(f"the largest palindromic product of two 3-digit numbers is {answer}.")
コード例 #13
0
ファイル: Problem036.py プロジェクト: gcpreston/project-euler
from euler import is_palindrome

total = 0
for n in range(1000000):
    if is_palindrome(str(n)) and is_palindrome(str(bin(n))[2:]):
        total += n
print(total)
コード例 #14
0
def palin_gen():
    for j in xrange(999, 900, -1):
        for k in xrange(999, 900, -1):
            n = j * k
            if euler.is_palindrome(n):
                yield n
コード例 #15
0
ファイル: 004.py プロジェクト: jaredks/euler
from euler import is_palindrome

print max(i * j for i in xrange(999, 900, -1) for j in xrange(999, i, -1) if is_palindrome(i * j))
コード例 #16
0
ファイル: 036.py プロジェクト: jeffreyhandler/project-euler
def compute():
    return sum([n for n in range(10**6) if is_palindrome(n) and is_palindrome(str(bin(n))[2:])])
コード例 #17
0
ファイル: 36.py プロジェクト: SCRK16/ProjectEuler
import sys
sys.path.append("..")
from euler import is_palindrome

upper = 1000000
double_palindromes = []

for i in range(upper):
    digits = list(str(i))
    if is_palindrome(digits):
        base2 = list(format(i, 'b'))
        if is_palindrome(base2):
            double_palindromes.append(i)

result = sum(double_palindromes)

print(double_palindromes)
print(result)
コード例 #18
0
 def test_is_palindrome(self):
     """Basic palindrome test"""
     self.assertTrue(euler.is_palindrome(1001))
コード例 #19
0
ファイル: 04.py プロジェクト: SCRK16/ProjectEuler
import sys
sys.path.append("..")
from euler import is_palindrome

largest = 9009
for i in range(100, 1000):
    for j in range(i, 1000):
        product = i * j
        if product > largest and is_palindrome(product):
            largest = product
print(largest)
コード例 #20
0
ファイル: euler-0055.py プロジェクト: nasa9084/project-euler
# -*- coding:utf-8 -*-
"""Project Euler problem 55"""
from euler import is_palindrome


c = 0
for i in range(10000):
    p = i
    for j in range(50):
        p = p + int(str(p)[::-1])
        if is_palindrome(p):
            break
    else:
        c += 1
print("Answer: " + str(c))
コード例 #21
0
# -*- coding:utf-8 -*-
"""Project Euler problem 55"""
from euler import is_palindrome

c = 0
for i in range(10000):
    p = i
    for j in range(50):
        p = p + int(str(p)[::-1])
        if is_palindrome(p):
            break
    else:
        c += 1
print("Answer: " + str(c))
コード例 #22
0
#!/usr/bin/env python
#Find the largest palindrome made from the product of two 3-digit numbers.

import euler

product = 0
palindrome = 0

for n in range(999, 100, -1):
    for x in range(100, 999, 1):
        product = n * x
        if euler.is_palindrome(str(product)) == True:
            if product > palindrome:
                palindrome = product

print(palindrome)
コード例 #23
0
ファイル: 004.py プロジェクト: jeffreyhandler/project-euler
def compute():
    return max([i * j for i in range(100, 1000) for j in range(100, 1000) if is_palindrome(i * j)])
コード例 #24
0
ファイル: prob4.py プロジェクト: cosmoduff/euler
#!/usr/bin/env python
#Find the largest palindrome made from the product of two 3-digit numbers.

import euler

product = 0
palindrome = 0

for n in range(999,100,-1):
	for x in range(100,999,1):
		product = n * x
		if euler.is_palindrome(str(product)) == True:
			if product > palindrome:
				palindrome = product

print(palindrome)