Technical assignment

unknown
python
3 years ago
2.3 kB
4
Indexable
Never
#I used 2D array for the pyramid structure and gave 0 to the empty parts.
array = [[215,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [193,124,0,0,0,0,0,0,0,0,0,0,0,0,0], [117,237,442,0,0,0,0,0,0,0,0,0,0,0,0],
[218,935,417,235,0,0,0,0,0,0,0,0,0,0,0], [320,804,522,417,345,0,0,0,0,0,0,0,0,0,0], [229,601,723,835,133,124,0,0,0,0,0,0,0,0,0],
[248,202,277,433,207,263,257,0,0,0,0,0,0,0,0], [359,464,504,528,516,716,871,182,0,0,0,0,0,0,0],
[461,441,426,656,863,560,380,171,923,0,0,0,0,0,0], [381,348,573,533,447,632,387,176,975,449,0,0,0,0,0],
[223,711,445,645,245,543,931,532,937,541,444,0,0,0,0], [330,131,333,928,377,733,17,778,839,168,197,197,0,0,0],
[131,171,522,137,217,224,291,413,528,520,227,229,928,0,0], [223,626,34,683,839,53,627,310,713,999,629,817,410,121,0],
[924,622,911,233,325,139,721,218,253,223,107,233,230,124,233]]

#Finding maximum value in the array
array_maximum = 0
for i in range(len(array)):
for j in range(len(array)):
if(array_maximum < array[i][j]):
array_maximum =  array[i][j]

#Function to find whether the number is prime or not. If prime, assigns negative value to number if not, returns the number.
def find_prime(number):
if(number < 2):
return number
if(number == 2):
return -array_maximum
for i in range(2, number):
if (number % i == 0):
return number
return -array_maximum

#Function to find maximum between two numbers
def find_max(a,b):
if(a<b):
return b
else:
return a

#Assigning negative value for primes in the array
for i in range(len(array)):
for j in range(len(array)):
array[i][j] = find_prime(array[i][j])

"""
Starting from the second row of array and assigning row elements new sum which is calculated by adding element to the maximum
of upper diagonal and upper element.
For example:
1            1          1
8 4    -->   9 5   -->  9 5
6 8 9        6 8 9      15 17 14
"""
for i in range(1,len(array)):
for j in range(len(array)):
array[i][j] = array[i][j] + find_max(array[i-1][j-1],array[i-1][j])

#Finding maximum value in the last row of the array
maximum = 0
i = len(array)-1
for j in range(len(array)):
if(maximum < array[i][j]):
maximum =  array[i][j]

print(maximum)