Ejemplo n.º 1
0
def adjacent_combinations(matrix, arity):
    h_tuples = [[row[i:i + arity] for i, item in enumerate(row[arity - 1:])]
                for row in matrix]
    v_tuples = [[row[i:i + arity] for i, item in enumerate(row[arity - 1:])]
                for row in map(list, zip(*matrix))
                ]  # recall that zip* creates tuple and not list
    # ul_lr_tuples = [[[matrix[i][j], matrix[i+1][j+1], matrix[i+2][j+2], matrix[i+3][j+3]] for j,item in enumerate(row[3:])] for i,row in enumerate(matrix[3:])]
    ul_lr_tuples = [[matrix[i + k][j + k] for k in range(arity)]
                    for j, item in enumerate(row[arity - 1:])
                    for i, row in enumerate(matrix[arity - 1:])]
    # ur_ll_tuples = [[[num_matrix[i+3][j], num_matrix[i+2][j+1], num_matrix[i+1][j+2], num_matrix[i][j+3]] for j,item in enumerate(row[3:]) for i,row in enumerate(num_matrix[3:])]
    ur_ll_tuples = [[matrix[(arity - k - 1) + i][j + k] for k in range(arity)]
                    for j, item in enumerate(row[arity - 1:])
                    for i, row in enumerate(matrix[arity - 1:])]
    return concat(h_tuples + v_tuples) + ul_lr_tuples + ur_ll_tuples
Ejemplo n.º 2
0
"""
Using Problem 13 Data
Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
"""

from math_library import concat, product
from io_library import read_data

if __name__ == "__main__":
    data = read_data('Problem_13_data.txt')
    strings = concat(data)
    nums = map(int, strings)
    sum_ints = reduce(lambda x, y: x + y, nums)
    str_num = str(sum_ints)
    print str_num[0:10]
Ejemplo n.º 3
0
def add_word_numbers2(num):
    numbers = [i for i in xrange(num + 1)]
    num_string = concat(map(number_to_word, numbers))
    return num_string
Ejemplo n.º 4
0
Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?
"""
from math_library import concat, product
from io_library import read_data

def n_adjacent_nums(n, lst):
    """
    > n_adjacent_nums(2, [1,2,3,4,5])
    """
    # return [[lst[i],lst[i+1]] for i,item in enumerate(lst[n-1:])]
    return [[lst[i+k] for k in range(n)] for i,item in enumerate(lst[n-1:])]


if __name__ == "__main__":
    data = read_data("Problem_8_Data.txt")
    strings = concat(data)
    entire_string = concat(strings)
    nums = map(int, entire_string)
    thirteen_ples = n_adjacent_nums(13, nums)
    # products = map(product,thirteen_ples)
    # max_product = max(products)
    max_product = max(product(t) for t in thirteen_ples)
    print max_product






Ejemplo n.º 5
0
def add_word_numbers(num):
    num_string = concat([number_to_word(i) for i in xrange(num + 1)])
    return concat([number_to_word(i) for i in xrange(num + 1)])