Palíndromos y capicúa con bash

Hace un tiempo, un amigo necesitaba crear un pequeño script que validara si una palabra o frase era palíndromo o si un número era capicúa usando como lenguaje el bash de Linux, nos montamos en la tarea hasta dar con la solución, conseguimos múltiples ejemplos pero no funcionaban correctamente, aquí está nuestro aporte:

#! /bin/bash

echo "Introduzca una frase, palabra o número para verificar si es palindromo o capicua"
read VAR

# Configuro tamaño real de la variable a evaluar
CAPTAM=$(echo $VAR | wc -c)     
TAM=$(($CAPTAM-1))              
STR=$VAR

# Quito los espacios si existe una frase con espacios
for j in $(seq 1 1 $TAM)
do
        CONCAT=$CONCAT$(echo $VAR | cut -f$j -d" ")
done

# Vuelvo a configurar el tamaño real
CAPTAM1=$(echo $CONCAT | wc -c) 
TAM1=$(($CAPTAM1-1))

# Divido la lectura hacia delante y hacia atrás de la frase, palabra o número 
# en dos variables para luego compararlas
for i in $(seq 1 1 $TAM1)
do
        ESP=$ESP$(echo $CONCAT | cut -c $TAM1)
        FRENTE=$FRENTE$(echo $CONCAT | cut -c $i)
        TAM1=$(($TAM1-1))
done

# Comparo las dos variables
if [ "$ESP" != "$FRENTE" ]; then
        echo "No es palindromo o capicua"
        exit 0
fi

echo "Si es palindromo o capicua"

exit 0

Lo guardamos con un nombre ej. palindrome.sh, se le asignaron los atributos correspondientes para un archivo ejecutable, ejecutamos:

$ ./palindrome.sh

Posteriormente sale el mensaje para ingresar una palabra, frase o número para verificar.

Como nota curiosa, existe un comando que invierte palabras, frases y números de una entrada, se puede usar de la siguiente manera:

$ echo Satelite Guayana | rev
Advertisements
This entry was posted in Bash. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s