Duvida em um exercicio Python

Ola, pessoal, estou aprendendo python e me surgiu uma divida resolvendo um exercicio, alguem poderia me explicar a logica da solucao?

Exercicio:

Given an array of ints, return True if … 1, 2, 3, … appears in the array somewhere.

array123([1, 1, 2, 3, 1]) → True
array123([1, 1, 2, 4, 1]) → False
array123([1, 1, 2, 1, 2, 3]) → True

Minha solucao:

[code]def array123(nums):
num1 = False
num2 = False
num3 = False

if len(nums) == 0:
     return False
for i in range(len(nums)):
    if((nums[i] == 1)):
        num1 = True
    elif((nums[i] == 2)):
        num2 = True
    elif((nums[i] == 3)):
        num3 = True
    else:
        return False
 
return num1 == num2 == num3[/code]

Solucao dada pelo site de exercicios:

[code]def array123(nums):

Note: iterate with length-2, so can use i+1 and i+2 in the loop

for i in range(len(nums)-2):
if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
return True
return False[/code]

Eu consegui resolver, so’ nao entendi a logica da solucao do site. Para mim, parece que ele so’ verifica se 1,2,3 aparecem em sequencia.

E é isso mesmo… aqueles pontinhos que foram colocados antes e depois da sequência sugerem que seja nessa ordem.

A título de curiosidade, uma solução um pouco mais simples para python:


test = set([1,2,3])

input1 = [1, 1, 2, 3, 1]
input2 = [1, 1, 2, 4, 1]
input3 = [1, 1, 2, 1, 2, 3]

test.issubset( set( input1 ) ) # True
test.issubset( set( input2 ) ) # False 
test.issubset( set( input3 ) ) # True