示例#1
0
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450"""

from lib import euler
max_ = 0

n = n.replace('\n', '')

for i in range(0, len(n)-4):
  substring = n[i:i+5]
  seq = [int(x) for x in [c for c in substring]]
  product = euler.product(seq)
  max_ = max(product, max_)
print max_
示例#2
0
for row in grid_.strip().splitlines():
  row_ = []
  for cell in row.split(' '):
    row_ += [int(cell)]
  grid += [row_]


p = 0
for i, row in enumerate(grid):
  for j, cell in enumerate(row):
    # we have four cases to consider:
    #  horizontal (right), vertical (down), diagonal-up and diagonal-down
    #  it doesn't matter which way we choose for diagonal, so we'll go right
    #  with those we cover the entire grid.
    
    # do we have space to go right or down/up?
    right = j < len(row) - 4
    down = i < len(grid) - 4
    up = i >= 4
    
    if right: p = max(p, euler.product(row[j:j+4]))
    if down: p = max(p, euler.product( [grid[i+x][j] for x in range(4)] ) )
    # diagonal right-down
    if right and down:
      p = max(p, euler.product( [grid[i+x][j+x] for x in range(4)] ) )
    # diagonal right-up
    if right and up:
      p = max(p, euler.product( [grid[i-x][j+x] for x in range(4)] ) )

print p
示例#3
0
from lib import euler

factorial_100 = euler.product(range(1, 101))
print sum([int(x) for x in str(factorial_100)])