Encuentra el mayor palíndromo
Clase 18 de 56 • 21 Días de Python
Contenido del curso
Clase 18 de 56 • 21 Días de Python
Contenido del curso
Emilio Sala
César Cubarrubia
Eduardo Peña Ramos
Nicolas Alpargatero
Edgar Alarcón
Nicolas Alpargatero
Francisco Jesús Eslava Fernández
Luis Gutiérrez Aguirre
iecgerman .
Emmanuel Paiva
Omar Cuarenta
Diego Cruz
Manuel Gomez
Eduardo Monzón
Harold Edward Rodriguez Navarro
Enrique Barrera
Victor Javier Vidal Durón
Maga Hernandez
Maga Hernandez
Braulio Rangel
Edwin Absalón Martinez Moreno
JORGE ALEXANDER MÚNERA CANABAL
Fabricio González Guasque
Diego Martínez Maqueda
Diego Geovanny Bracero
Alejandro Anaya
def find_largest_palindrome(words): largest = 0 palindrome = "" for word in words: if word == word[::-1]: if len(word) > largest: palindrome = word largest = len(word) return palindrome if palindrome else None
Me gustó mucho tu código, no recordaba lo de usar los corchetes para invertir la palabra. Te quería comentar que podrías cambiar el if anidado por esto:
if word == word[::-1] and len(word) > largest: palindrome = word largest = len(word)
En realidad tú código me gustó bastante, nada más quería ver si esto te podría servir y mejorar, aunque sea poco, algo. Saludos :)
Funcionan perfecto ambas soluciones. También se puede eliminar el if anidado, como menciona Cesar.
Saludos.
Lo solucioné, pero me daba error en dos test, era por el "largest" y después quise simplificarlo. buena aplicación...
Cual estrategias usas para ir mirando como se reduce el codigo?
Sinceramente GPT. Eso si no abuso en el sentido que lo haga todo porque pues no se aprendería, sino por partes.
def find_largest_palindrome(words): #variables longitudMayor = 0 palindromo="" #iterando para cada palabra for i in words: #condicion 1 comprueba que la palabra sea palíndromo usando slicing #condicion 2 comprueba si es el mayor palíndromo if i == i[::-1] and len(i)>longitudMayor: palindromo = i longitudMayor = len(i) #si no hay palindromo se regresa "None" if palindromo=="": return None return (palindromo)
No pude resolver como iterar en una lista para saber que palabra es más larga, a seguir estudiando
Ánimo Luis yo el reto pasado del contador de frases me puse a repasar lo de los diccionarios y para que los imprimas como columna te recomiendo la clase 33 del for de fundamentos
Mi solución:
def find_largest_palindrome(words): # Tu código aquí 👈 palindrome = "" for word in words: if word == word[::-1] and len(word) > len(palindrome): palindrome = word if palindrome == "": palindrome = None return palindrome
def find_largest_palindrome(words): cantidad_maxima = 0 hay_palindromos = False palindromo_mayor = None for palabra in words: if palabra == palabra[::-1]: if not hay_palindromos: hay_palindromos = True cantidad = len(palabra) if cantidad > cantidad_maxima: cantidad_maxima = cantidad palindromo_mayor = palabra if hay_palindromos: return palindromo_mayor else: return None
hola comparto mi solucion. fue un buen reto:
def find_largest_palindrome(words): palabra_derecho = [] palabra_reves = [] palindromos = [] resultado = "" for palabra in words: for letra in palabra: palabra_derecho.append(letra) for i in range(len(palabra_derecho), 0, -1): palabra_reves.append(palabra_derecho[i-1]) if palabra_derecho == palabra_reves: palindromos.append(palabra_derecho) palabra_derecho = [] palabra_reves = [] if len(palindromos) <= 0: return None mayor_palindromo = max(palindromos, key=len) for l in mayor_palindromo: resultado = resultado + l return resultado ```def find\_largest\_palindrome(words): palabra\_derecho = \[] palabra\_reves = \[] palindromos = \[] resultado = "" for palabra in words: for letra in palabra: palabra\_derecho.append(letra) for i in range(len(palabra\_derecho), 0, -1): palabra\_reves.append(palabra\_derecho\[i-1]) if palabra\_derecho == palabra\_reves: palindromos.append(palabra\_derecho) palabra\_derecho = \[] palabra\_reves = \[] if len(palindromos) <= 0: return None mayor\_palindromo = max(palindromos, key=len) for l in mayor\_palindromo: resultado = resultado + l return resultado
def find_largest_palindrome(words): palindrome = [word for word in words if word == word[ : :-1]] if palindrome != []: len_largest = max([len(x) for x in palindrome]) largest_words = [largest for largest in palindrome if len_largest == len(largest)] return largest_words[0] elif palindrome == []: return None
esta es mi versión final del código después de haber visto lambda functions:
find_largest_palindrome = lambda words: max([word for word in words if word == word[::-1]], key=len, default=None)
def find_largest_palindrome(words): mayor=0 mas_largo=None for palabra in words: if es_palindromo(palabra): longitud=len(palabra) if longitud > mayor: mayor=longitud mas_largo=palabra return mas_largo def es_palindromo(word): word=word.lower() letras=len(word) for letra in range(0, letras): if word[letra]!= word[letras-letra-1]: return False return True
Comparto versión reducida, saludos!
def find_largest_palindrome(words): return max([word for word in words if word == word[::-1]], key = len, default = None)
hi, i did it!!
lo ajuste:
.
.
.
def find_largest_palindrome(words): # maximo = max(list(map(lambda palabra : len(palabra) , words)))) filtro= [] palindrome = [] for item in words: if len(item) // 2 != 0: filtro.append(item) # print(filtro) cont = 0 coincide = -1 while cont <= len(filtro)-1: inv = len(filtro[cont])-1 for num, letra in enumerate(filtro[cont]): # print( filtro[cont][num],filtro[cont][inv]) if filtro[cont][num] == filtro[cont][inv]: coincide += 1 # print("num",num,"incide",coincide,"inv",inv,filtro[cont][num] , filtro[cont][inv],filtro[cont],) if num == coincide and coincide == inv: # print(coincide,num,inv) # print("palindramo", filtro[cont] ) palindrome.append(filtro[cont]) inv -= 1 cont += 1 coincide = -1 if len(palindrome) > 0: len_max = max(list(map(lambda palabra : len(palabra) , palindrome))) # 9 # print("len_max",len_max) for letra in palindrome: if len(letra) == len_max: # print("encontrado", letra) palindrome = [] return letra #palindrome.append(letra) break else: #palindrome = [ "None"] return None
. . . . . . . . . Se podría optimizar para bajar complejidad pero bueeee :D
def find_largest_palindrome(words): words_List = [] words_list_reverse = [] palindromos = [] for phrase_or_word in words: list_by = list(phrase_or_word.split(" ")[0]) words_List.append(''.join(list_by)) reverse = ''.join(list_by[::-1]) words_list_reverse.append(reverse) for phrase_or_word in words_List: if phrase_or_word in words_list_reverse: palindromos.append(phrase_or_word) palindromos_ordenados = sorted(palindromos, key=len, reverse=True) if len(palindromos_ordenados) == 0: return None return palindromos_ordenados[0]
def find_largest_palindrome(words): # Tu código aquí 👈 mayor = 0 devolver = None for palabra in words: if palabra == palabra[::-1]: if len(palabra) > mayor: mayor = len(palabra) devolver = palabra return devolver
Hola, les comparto mi solución:
def find_largest_palindrome(words): # Tu código aquí 👈 palindrome = '' for word in words: if word[::-1] == word and len(word) > len(palindrome): palindrome = word if palindrome == '': palindrome = None return palindrome pass
def find_largest_palindrome(words): palindromos = [] mayor_palindromo ='' for word in words: if word[::-1] == word: palindromos.append(word) for palindromo in palindromos: if len(mayor_palindromo) < len(palindromo): mayor_palindromo = palindromo if mayor_palindromo != '': return mayor_palindromo else: return None
🛡️🛡️Escudo anti-spoilers🛡️🛡️
Mi solución al reto:
def find_largest_palindrome(words): palindromes = list() for w in words: is_palindrome = True for i,v in enumerate(w): if v != w[len(w)-i-1]: is_palindrome = False if is_palindrome: palindromes.append(w) if len(palindromes) <=0: return None return max(palindromes, key=len)