Напишите функцию, которая возвращает 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