在二维数组中查找局部最大值 Python

问题描述

不知道函数式编程怎么写? 我在编程范式中制作了这段代码。 我使用了摩尔社区。​​p>

需要在给定的二维数组局部最大值中找到最大值。 局部最大值是一个元素,一个比它的所有邻居更重要的值。

我如何理解函数式编程:

仅使用函数调用、基于其他函数调用的匿名函数定义、递归、实现函数式编程可能性的特殊函数禁止使用循环、条件运算符、赋值运算符、控制运算符(return 除外)。

编程范式。

with open("matrix.txt","r") as file:
    txtMatrix = file.read()
    txtMatrix += "\0"
# matrix =1 3 9 3
#         2 3 2 1
#         2 5 1 7
#         1 2 3 4

counterColumn = 0
counterRow = 0
txtNumber = ""

matrix = [[]]
for i in range(len(txtMatrix)):
    if txtMatrix[i] == " " or txtMatrix[i] == "\0":
        matrix[counterRow].append(int(txtNumber))
        counterColumn += 1
        txtNumber = ""
    elif txtMatrix[i] == "\n":
        matrix[counterRow].append(int(txtNumber))
        matrix.append([])
        counterRow += 1
        counterColumn = 0
        txtNumber = ""
    else:
        txtNumber += txtMatrix[i]

print(matrix)

localMax = []
maxInLocalMax = matrix[0][0]
print("Local maxes:")
for i in range(0,len(matrix)):
    for j in range(0,len(matrix[i])):
        localMax.append(matrix[i][j])
        #RU Соседство определяется по окрестности Мура
        #ENG Neighborhood is determined by the neighborhood of Moore
        for k in range(-1,2):
            if (i == 0 and k == -1) or (i == len(matrix) - 1 and k == 1): continue
            for l in range(-1,2):
                if (j == 0 and l == -1) or (j == len(matrix[i]) - 1 and l == 1): continue
                if localMax[len(localMax) - 1] < matrix[i + k][j + l]:
                    localMax[len(localMax) - 1] = matrix[i + k][j + l]

        print(localMax[len(localMax) - 1],end=' ')
        if maxInLocalMax < localMax[len(localMax) - 1]: maxInLocalMax = localMax[len(localMax) -1]
    print()

# print("Max in localMax: " )#,end=''
# print(maxInLocalMax)

#Output:
#Local maxes:
#3 9 9 9 
#5 9 9 9 
#5 5 7 7 
#5 5 7 7 

我尝试在函数式编程中编写代码,但不太正确。

# Function to find minimum and maximum position in list
def maxminposition(A,n):
   # inbuilt function to find the position of minimum 
   minposition = A.index(min(A))
   # inbuilt function to find the position of maximum 
   maxposition = A.index(max(A)) 
   print ("The maximum is at position::",maxposition + 1) 
   print ("The minimum is at position::",minposition + 1)
# Driver code
A=list()
n=int(input("Enter the size of the List ::"))
print("Enter the Element ::")
for i in range(int(n)):
   k=int(input(""))
   A.append(k)
maxminposition(A,n)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...