如何计算未来动作的邻接分数?

时间:2019-07-02 20:26:52

标签: python algorithm

我有一个作业,我必须计算列表的邻接分数,而只能编辑3行代码。

该功能上下文中的邻接分数如下: 给定输入[0, 1, 1, 1, 0, 0] 由于存在3对具有相同值的对,因此邻接分数将为3。即索引:(1,2),(2,3)和(4,5)。

该函数的目标是,如果数组中的一个数字取反,则计算邻接分数。该代码为某些输入生成正确的数字,为其他输入生成错误的数字。输入始终是6个整数(0或1)的列表 这是代码:


    def solution(A):
    n = len(A)
    result = 0
    for i in range(n - 1):
        if (A[i] == A[i + 1]):
            result = result + 1
    r = 0
    for i in range(n):
        count = 0
        if (i > 0):
            if (A[i - 1] != A[i]):
                count = count + 1
            else:
                count = count - 1
        if (i < n - 1):
            if (A[i + 1] != A[i]):
                count = count + 1
            else:
                count = count - 1
        r = max(r, count)
    return result + r

1 个答案:

答案 0 :(得分:0)

我不确定您的代码,但是下面的几行会创建结果,您正在寻找:

import numpy as np
a = np.array([0,1,1,1,0,0])
pairs = np.lib.stride_tricks.as_strided(a, shape = (len(a)-1, 2), strides = a.strides*2)

print(pairs)
print(np.sum(pairs[:,0] == pairs[:,1]))