예제 #1
0
# Project Euler
# Problem 33: Digit cancelling fractions
import pe_functions as pe
import math


def sol():
    '''
    Solution to project euler problem.
    '''
    nprod = 1
    dprod = 1

    for i in range(1, 10):
        for d in range(1, i):
            for n in range(1, d):
                if d * (10 * n + i) == n * (i * 10 + d):
                    dprod *= d
                    nprod *= n
    dprod /= math.gcd(nprod, dprod)
    return int(dprod)


if __name__ == '__main__':
    pe.runSolution(sol)
예제 #2
0
# Project Euler
# Problem 15:  Lattice paths
import pe_functions as pe
import numpy as np


def sol(grid_size):
    '''
    Solution to project euler problem.
    '''
    grid = [1] * grid_size
    for i in range(grid_size):
        for j in range(i):
            grid[j] = grid[j] + grid[j - 1]
        grid[i] = 2 * grid[i - 1]
    return (grid[grid_size - 1])


if __name__ == '__main__':
    pe.runSolution(sol, 20)
예제 #3
0
# Project Euler
# Problem 12:  Highest divisible triangular number
import pe_functions as pe
import numpy as np


def sol(Limit):
    '''
    Solution to project euler problem.
    '''
    triangleNumber = 1
    for n in range(2, 1000000):
        triangleNumber += n
        if pe.numDivisors(triangleNumber) >= Limit:
            return triangleNumber
            break


if __name__ == '__main__':
    pe.runSolution(sol, 500)
예제 #4
0
# Project Euler
# Problem 20:  Factorial digit sum
import pe_functions as pe
import numpy as np


def sol(n):
    '''
    Solution to project euler problem.
    '''
    digits = list(str(pe.factorial(n)))
    return (sum([int(i) for i in digits]))


if __name__ == '__main__':
    pe.runSolution(sol, 100)