Напишите функцию, которая возвращает True, если переданный список — полноценный браслет и False, если неполноценный

Есть задача:

Полноценный браслет — это список с хотя бы одной подпоследовательностью, которая повторяется хотя бы два раза. Длина подпоследовательности должна быть равна 2 или больше.

Полноценные браслеты: [1, 2, 3, 3, 1, 2, 3, 3] # Повторяющаяся последовательность: [1, 2, 3, 3] [1, 2, 1, 2, 1, 2, 1, 2] # Повторяющаяся последовательность: [1, 2] or [1, 2, 1, 2] [1, 1, 6, 1, 1, 7, 1, 1, 6, 1, 1, 7, 1, 1, 6, 1, 1, 7] # Повторяющаяся последовательность: [1, 1, 6, 1, 1, 7]

Неполноценные браслеты: [1, 2, 2, 2, 1, 2, 2, 2, 1] # Подпоследовательность обрублена [1, 1, 6, 1, 1, 7] # Подпоследовательность повторяется только 1 раз

Много какими способами пытался решить, используя словари, переводил в строки, пробовал с помощью индексов, функцией count, дайте пожалуйста подсказку куда смотреть, решить попробую сам, спасибо!

complete_bracelet([1, 2, 2, 1, 2, 2]) ➞ True

complete_bracelet([5, 1, 2, 2]) ➞ False

complete_bracelet([5, 5, 5]) ➞ False

Пример кода который работает только с четным числом последовательностей:

def complete_bracelet(my_list):
 if len(my_list) % 2 != 0:
  return False
 lst = [my_list[0:len(my_list)//2]] + [my_list[len(my_list)//2:]]
 for i in range(len(lst)-1):
  for j in lst[i]:
   if lst[i][j] != lst[i+1][j]:
    return False
 return True

Ответы (0 шт):