Duvida em um exercicio Python

2 respostas
B

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:

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

Solucao dada pelo site de exercicios:

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

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.

2 Respostas

Roselito_Favero_da_S

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

A

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
Criado 25 de setembro de 2013
Ultima resposta 25 de set. de 2013
Respostas 2
Participantes 3