En este post de programación en Python vamos a resolver un ejercicio para saber si dos cadenas son anagramas, o mejor dicho, si una cadena es anagrama de otra.
Recuerda que una palabra es anagrama de otra si ambas tienen las mismas letras pero ordenadas de distinta manera. Por ejemplo, Hola y Aloh son anagramas pues aunque tienen distinto orden ambas tienen 4 letras que son las mismas.
En este caso estamos suponiendo que las mayúsculas y minúsculas no importan, ya que normalmente los anagramas no toman en cuenta eso.
Lo que vamos a hacer será transformaciones a las cadenas y comparaciones de las mismas. Esto es realmente sencillo. Veamos el proceso:
Veamos ahora un ejemplo del funcionamiento del algoritmo. Vamos a comparar la palabra Nacionalista
y Altisonancia
. Primero convertimos ambas a minúsculas: nacionalista
y altisonancia
.
Después, las ordenamos. nacionalista
se convierte en aaaciilnnost
y altisonancia
en aaaciilnnost
.
Finalmente comparamos las cadenas. En este caso son iguales, así que se dice que una palabra es anagrama de la otra. Si no lo son, entonces la cadena no es anagrama de la otra.
Ya he explicado el funcionamiento. Ahora veamos el código. He encerrado todo en una función para que sea más fácil de invocar.
"""
https://parzibyte.me/blog
"""
def anagrama(palabra1, palabra2):
# Convertimos ambas a minúsculas
palabra1 = palabra1.lower()
palabra2 = palabra2.lower()
# Luego convertimos las cadenas a arreglos, porque vamos a ordenarlas pero es más sencillo ordenar un arreglo
palabra1_arreglo = list(palabra1)
palabra2_arreglo = list(palabra2)
# Las ordenamos
palabra1_arreglo.sort()
palabra2_arreglo.sort()
# Convertir de vuelta a cadena
palabra1_ordenada = "".join(palabra1_arreglo)
palabra2_ordenada = "".join(palabra2_arreglo)
# Y finalmente comprobar si son iguales
return palabra1_ordenada == palabra2_ordenada
Los comentarios explican el comportamiento del método. El modo de uso es invocarlo con dos cadenas, para que devuelva un booleano.
Ahora te mostraré un ejemplo de uso de la función:
"""
https://parzibyte.me/blog
"""
def anagrama(palabra1, palabra2):
# Convertimos ambas a minúsculas
palabra1 = palabra1.lower()
palabra2 = palabra2.lower()
# Luego convertimos las cadenas a arreglos, porque vamos a ordenarlas pero es más sencillo ordenar un arreglo
palabra1_arreglo = list(palabra1)
palabra2_arreglo = list(palabra2)
# Las ordenamos
palabra1_arreglo.sort()
palabra2_arreglo.sort()
# Convertir de vuelta a cadena
palabra1_ordenada = "".join(palabra1_arreglo)
palabra2_ordenada = "".join(palabra2_arreglo)
# Y finalmente comprobar si son iguales
return palabra1_ordenada == palabra2_ordenada
cadena1 = "Nacionalista"
cadena2 = "Altisonancia"
es_anagrama = anagrama(cadena1, cadena2)
if es_anagrama:
print(f"{cadena1} es anagrama de {cadena2}")
else:
print(f"{cadena1} NO es anagrama de {cadena2}")
# Solicitar al usuario las cadenas
cadena1 = input("Ingresa una cadena: ")
cadena2 = input("Ingresa otra cadena: ")
es_anagrama = anagrama(cadena1, cadena2)
if es_anagrama:
print(f"{cadena1} es anagrama de {cadena2}")
else:
print(f"{cadena1} NO es anagrama de {cadena2}")
Como puedes ver estamos probando la función de anagrama de dos maneras. En el primer caso es con palabras proporcionadas por el programador, y en el segundo caso por el usuario.
La ejecución es:
También puedes leer más sobre Python aquí.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.