import math def isPrime(number): sqrt = math.ceil(math.sqrt(number)) for i in range(2,sqrt + 1): if number % i == 0: return False return True # this problem is not exactly clear. # 1. You will start from the top and move downwards to an adjacent number as in below. # does that mean i can visit the left numbers? # in this solution i didnt, but i added the code in comments. def maxPath(filePath): file = open(filePath, "r") numbers = [] for line in file: row = line.strip().split() # these numbers are currently stored in strings since we took this data from txt file # cast it to integer # i could do this later but i chose to do it now. row = [int(i) for i in row] numbers.append(row) result = solver(numbers,0,0) file.close() return result def solver(numbers,row,col): if row >= len(numbers): return 0 number = numbers[row][col] if isPrime(number): return 0 # if we can go to left number # add if col < 0 return 0 below row>= return 0 statement # return number + max(solver(numbers, row + 1, col - 1), solver(numbers, row + 1 , col) , solver(numbers, row + 1, col + 1)) return number + max(solver(numbers, row + 1 , col) , solver(numbers, row + 1, col + 1)) res = maxPath("big_input.txt") print(res)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question