Определение, является ли массив внутри массива смежным - PullRequest
0 голосов
/ 25 сентября 2019

Во-первых, я начинаю с отсортированных пробных данных:

[[ 2,  4,  9, 10, 11],
 [ 2,  6,  7,  8, 14],
 [ 3,  6,  8,  8, 11],
 [ 4,  6, 10, 11, 13],
 [ 2,  3,  3,  5,  6],
 [ 3,  5, 12, 12, 13],
 [ 2,  2,  3,  9, 11],
 [ 2,  5, 11, 11, 13],
 [ 3,  5,  7,  9, 10],
 [ 2,  6,  7,  8, 14]]

Затем моя цель - вернуть True или False вместо каждого массива внутри, а затем распечатать количество True (смежных массивов)

Пока что я сделал это:

def isStraight(arr, n):

    for i in range(1,n): 
        if (arr[i] - arr[i-1] > 1) : 
            return 0
    return 1

, но он возвращает ошибку: 1009 *

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Так что я не уверен, как реализовать еще один цикл для итерациичерез внутренние массивы.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Вывод этого кода содержит список значений true и false.True указывает, что соответствующий ему массив является непрерывным, а false указывает, что соответствующий ему массив не является непрерывным.Наконец, отображается число непрерывных массивов.

def contiguous_arrays(array):
    value=[]
    for i in range(len(array)):
        value.append(array[i]==list(range(min(array[i]),max(array[i])+1)))
    print(value)
    print('Number of continuous arrays:',value.count(True))

array=[[ 2,  4,  9, 10, 11],
       [ 2,  6,  7,  8, 14],
       [ 3,  6,  8,  8, 11],
       [ 4,  6, 10, 11, 13],
       [ 2,  3,  3,  5,  6],
       [ 3,  5, 12, 12, 13],
       [ 2,  2,  3,  9, 11],
       [ 2,  5, 11, 11, 13],
       [ 3,  5,  7,  9, 10],
       [ 2,  6,  7,  8, 14]]
contiguous_arrays(array)
# [False, False, False, False, False, False, False, False, False, False]             Number of continuous arrays: 0
0 голосов
/ 25 сентября 2019

Я предполагаю, что массив является смежным, если какие-либо последовательные элементы имеют разницу более 1, с этим попробуйте следующий код:

a =[[ 2,  4,  9, 10, 11],
 [ 2,  6,  7,  8, 14],
 [ 3,  6,  8,  8, 11],
 [ 4,  6, 10, 11, 13],
 [ 2,  3,  3,  5,  6],
 [ 3,  5, 12, 12, 13],
 [ 2,  2,  3,  9, 11],
 [ 2,  5, 11, 11, 13],
 [ 3,  5,  7,  9, 10],
 [ 2,  6,  7,  8, 14]]

def isStraight(arr, n):
    for i in range(1,n): 
        if (arr[i] - arr[i-1] > 1) : 
            return 0
    return 1

values = []
for j in a:
    if(isStraight(j, len(j))==1):
        values.append(True)
    else:
        values.append(False)

print(values)
...