Last active
October 29, 2022 15:02
-
-
Save luizomf/3e94d9ca785ab77cb58f3697b6d7c0b8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
-> É uma lista de listas de números inteiros | |
-> As listas internas tem o tamanho de 10 elementos | |
-> As listas internas contém números entre 1 a 10 e eles podem ser duplicados | |
Exercício | |
-> Crie uma função que encontra o primeiro duplicado considerando o segundo | |
número como a duplicação. Retorne a duplicação considerada. | |
Requisitos: | |
A ordem do número duplicado é considerada a partir da segunda | |
ocorrência do número, ou seja, o número duplicado em si. | |
Exemplo: | |
[1, 2, 3, ->3<-, 2, 1] -> 1, 2 e 3 são duplicados (retorne 3) | |
[1, 2, 3, 4, 5, 6] -> Retorne -1 (não tem duplicados) | |
Se não encontrar duplicados na lista, retorne -1 | |
""" | |
lista_de_listas_de_inteiros = [ | |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], | |
[9, 1, 8, 9, 9, 7, 2, 1, 6, 8], | |
[1, 3, 2, 2, 8, 6, 5, 9, 6, 7], | |
[3, 8, 2, 8, 6, 7, 7, 3, 1, 9], | |
[4, 8, 8, 8, 5, 1, 10, 3, 1, 7], | |
[1, 3, 7, 2, 2, 1, 5, 1, 9, 9], | |
[10, 2, 2, 1, 3, 5, 10, 5, 10, 1], | |
[1, 6, 1, 5, 1, 1, 1, 4, 7, 3], | |
[1, 3, 7, 1, 10, 5, 9, 2, 5, 7], | |
[4, 7, 6, 5, 2, 9, 2, 1, 2, 1], | |
[5, 3, 1, 8, 5, 7, 1, 8, 8, 7], | |
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], | |
] | |
def encontra_primeiro_duplicado(param_lista_de_inteiros): | |
numeros_checados = set() | |
primeiro_duplicado = -1 | |
for numero in param_lista_de_inteiros: | |
if numero in numeros_checados: | |
primeiro_duplicado = numero | |
break | |
numeros_checados.add(numero) | |
return primeiro_duplicado | |
for lista_de_inteiros in lista_de_listas_de_inteiros: | |
print(lista_de_inteiros, encontra_primeiro_duplicado(lista_de_inteiros)) | |
""" | |
Os resultados devem ser: | |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -1 | |
[9, 1, 8, 9, 9, 7, 2, 1, 6, 8] 9 | |
[1, 3, 2, 2, 8, 6, 5, 9, 6, 7] 2 | |
[3, 8, 2, 8, 6, 7, 7, 3, 1, 9] 8 | |
[4, 8, 8, 8, 5, 1, 10, 3, 1, 7] 8 | |
[1, 3, 7, 2, 2, 1, 5, 1, 9, 9] 2 | |
[10, 2, 2, 1, 3, 5, 10, 5, 10, 1] 2 | |
[1, 6, 1, 5, 1, 1, 1, 4, 7, 3] 1 | |
[1, 3, 7, 1, 10, 5, 9, 2, 5, 7] 1 | |
[4, 7, 6, 5, 2, 9, 2, 1, 2, 1] 2 | |
[5, 3, 1, 8, 5, 7, 1, 8, 8, 7] 5 | |
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1] -1 | |
""" |
A minha ficou dessa maneira aqui, muito louco ver que tem muito jeito de chegar em um resultado, muito bom!!!
Lembrando que no meu resultado, apenas mostra a resposta sem a lista do lado como o professor fez, mas ao menos eu cheguei no resultado. kkkkk
def numero_repetidos_em_listas_sublistas(lista):
para_return = []
for numero_da_sublista, index_de_lista in enumerate(lista):
sublista = index_de_lista
for index_sublista, valor_sublista in enumerate(sublista):
if index_sublista <= 8:
if sublista[index_sublista] == sublista[index_sublista + 1]:
para_return += f'{sublista[index_sublista]}'
break
else:
para_return += ([-1])
return (para_return)
verificar_lista = numero_repetidos_em_listas_sublistas(lista_de_listas_de_inteiros)
print(verificar_lista)
Minha Solução =>
Sei q esta um pouco mais complexo doque precisaria, mas eu tbm fiz umas alteracaoes tipo acrescentando um gerador aleatorio de listas raondomicas...
import random as rd
def gerador_lista(qtd:int, tamanho:int)->list:
"""Gera uma lista de numeros randomicas com uma quantidade QTD com TAMANHO elementos"""
lista_local = []
listatemp = []
for _ in range(0, qtd):
for _ in range(0, tamanho):
listatemp.append(rd.randint(0, 9))
lista_local.append(listatemp)
listatemp = []
return lista_local
def busca_repetido(lista: list)->list:
""""Recebe uma lista, busca o primeiro elemento repetido
e retorna uma lista (a,b) onde a é o elemento repetido e
b é a posicao na lista do elemento repetido."""
lista_repetidos = [-1]
d_temp = -1
for index,valor in enumerate(lista):
for i,v in enumerate(lista):
d = len(lista)-i
if (i != index) and (valor == v) and (i>index) and d>d_temp:
d_temp = d
lista_repetidos.clear()
lista_repetidos.append([i,v])
return lista_repetidos
lista_main = gerador_lista(500,8) #gera 500 listas de 8 elementos
for i in lista_main:
lista_busca = busca_repetido(i)
print(i, lista_busca)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Olá professor
eu realizei meu código dessa maneira