Skip to content

Instantly share code, notes, and snippets.

@liviocunha
Created March 25, 2021 03:24
Show Gist options
  • Save liviocunha/d96d58bd92eb7759eda79dbfa7dedc7e to your computer and use it in GitHub Desktop.
Save liviocunha/d96d58bd92eb7759eda79dbfa7dedc7e to your computer and use it in GitHub Desktop.
Challenge DataFinder
def solver(lista_entrada, int_a, int_b):
# Variáveis auxiliares que serão usadas nas iterações
contador_strings = 0
repeticoes_de_a = 0
repeticoes_de_b = 0
# Início do 1º while
# len(lista_entrada) é a quantidade de elementos que possui a lista de strings e o contador_strings iniciou no 0 e na linha 41
# é feito a incrementação. Portanto o while irá ser executado até iterar por todos os elementos/strings da lista_entrada
while contador_strings < len(lista_entrada):
# São variaveis boolenas para indicar as repetições dos caracteres conforme os inputs, estão sendo iniciadas como False
repetiu_a = False
repetiu_b = False
# Lista de controle pra ser usada para ir adicionando os caracteres da string já iterados
lista_verificados = []
# Variavel i é uma auxiliar para indicar a quantidade de vezes de iterações do 2º while
i = 0
# Início do 2º while
# Dessa vez a condição do while é a quantidade de caracteres que a string/elemento da lista possui
# lista_entrada[contador_strings] -> é o acesso ao elemento através de index.
# Então começa pelo 0 e vai até o último elemento da lista_entrada
while i < len(lista_entrada[contador_strings]):
# Condicional IF que verifica se o caractere existe na lista de caracteres já verificados
if lista_entrada[contador_strings][i] not in lista_verificados:
# Se não existe aqui é inserido o caractere da string na lista de caracteres verificados
lista_verificados.append(lista_entrada[contador_strings][i])
# Variável auxiliar para contar as repetições dos caracteres verificados
contador_repeticoes = 0
# Variável auxiliar para ser usado como índice no 3º while para acessar os elementos/caracteres da string
j = 0
# Início do 3º while
# Aqui a condição do while também é a quantidade de elementos/caracteres da string
# O intuito desse while é para ir verificando elemento/caractere por elemento/caractere se há repeticão
while j < len(lista_entrada[contador_strings]):
# Então a Condicional IF é para verificar se o caractere é repetido
if lista_entrada[contador_strings][i] == lista_entrada[contador_strings][j]:
# se sim é incrementado +1 na variável auxiliar contador_repeticoes
contador_repeticoes += 1
# variável auxiliar para garantir que o while será feito somente a quantidade
# de caracteres da string e também o += é um incremento
j += 1
# IF condicional para ver se o contator_repeticoes do caractere é o mesmo do input int_a feito pelo usuário
if contador_repeticoes == int_a:
# Se sim transforma a variável repetiu_a booleana em True (lá em cima no começo do 1º while
# ele iniciou como False
repetiu_a = True
# IF condicional para ver se o contator_repeticoes do caractere é o mesmo do input int_b feito pelo usuário
elif contador_repeticoes == int_b:
# Se sim transforma a variável repetiu_b booleana em True (lá em cima no começo do 1º while
# ele iniciou como False
repetiu_b = True
# Aqui também é uma variável auxiliar para garantir que o 2º while irá percorrer somente a quantidade de
# elementos/caracteres da string
i += 1
# Ainda dentro do 1º while depois de fazer todas as iterações dos elementos/caracteres da string,
# os blocos de código abaixo tem o intuito de contar as repeticoes_de_a e as repeticoes_de_b conforme as
# variáveis boleanas True repetiu_a e repetiu_b
if repetiu_a == True and repetiu_b == True:
repeticoes_de_a += 1
repeticoes_de_b += 1
elif repetiu_a == True:
repeticoes_de_a += 1
elif repetiu_b == True:
repeticoes_de_b += 1
# Depois de realizar todos os loops da string é feito a incrementação na variável da condição do 1º While
# e inicia o todo o processo novamente agora do próximo elemento/strings da lista_entrada
contador_strings += 1
# Terminado os loops/while é feito a impressão o resultado das repeticões no terminal
print(f'Repeticoes de a={int_a}: {repeticoes_de_a}\nRepeticoes de b={int_b}: {repeticoes_de_b}')
# Retorno da função com a soma dos resultados (possivelmente para validar o teste)
return repeticoes_de_b + repeticoes_de_a
# Lista usada das strings
lista = ['mmnbvasfkjadfh',
'fajlgijaegejeg',
'uioereknvkndaa',
'glakejeelgkcvd',
'flakjwealjkglg',
'aabcdgageaegad',
'qwerrtyuyuiooe',
'qwerqwerqerwqe',
'pppopooiipppop',
'gaejgeagjjlakg',
'bbbiiiooaoaoao']
# Variaveis dos números de input
int_a = 2
int_b = 5
# Chamada da função passando os 3 inputs
solver(lista, int_a, int_b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment