Exemplo n.º 1
0
Arquivo: mix.py Projeto: tomik/euler
def problem_11():
    """
    What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in 
    the given 20x20 grid?
    """
    numbers = elib.load_numbers('data/15.txt', split=True)
    size = int(math.sqrt(len(numbers)))
    seq_len = 4
    max = 0
    direction = {
            'up':         (lambda x: x > size, -size),
            'down':       (lambda x: x < size**2 - size, -size),
            'left':       (lambda x: x % size != 0, -1),
            'right':      (lambda x: x % size != size - 1, +1),
            'diag_right': (lambda x: x < size**2 - size and x % size != size - 1, size + 1),
            'diag_left':  (lambda x: x < size**2 - size and x % size != 0, size - 1)
           }

    for i in xrange(len(numbers)):
        for d in direction.values():
            pos = i
            act = numbers[pos]
           # ids = [i]
            for j in xrange(seq_len - 1):
                if not d[0](pos):
                    break
                pos += d[1]
                act *= numbers[pos]
            if act > max:
                max = act

    return max
Exemplo n.º 2
0
Arquivo: mix.py Projeto: tomik/euler
def problem_13():
    """
    Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
    """
    numbers = elib.load_numbers('data/14.txt', split=True)
    total = sum(numbers)

    return str(total)[:10]