Funcion Palindrome [Batch]

Iniciado por leogtz, 15 Junio 2009, 01:09 AM

0 Miembros y 1 Visitante están viendo este tema.

leogtz

Basicamente se pide una palabra, se pone la cadena de forma inversa y se compara con la primera pedida al usuario.

Código (dos) [Seleccionar]
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0


Salida:
C:\>este
Cadena : seres
Palindrome

C:\>este
Cadena : algo
No palindrome

C:\>este
Cadena : ana
Palindrome

C:\>este
Cadena : Lalo
No palindrome

C:\>este
Cadena : arenero
No palindrome

C:\>este
Cadena : arenera
Palindrome

C:\>
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Darioxhcx

problema con palrabas multiples palindomes =P

anita lava la tina

es una frase palindome (?
y me tira error (?
un saludo :P

leogtz

Lamentablemente solo funciona con 1 sola palabra, luego veo si lo soluciono.

Gracias por probar el código.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

leogtz

#3
He actualizado el código, ahora funciona con frases :
Código (dos) [Seleccionar]
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena=%cadena: =%"
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
for /f "tokens=*" %%_ in (file.txt) do (
if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
)
pause>nul 2>&1
exit /b 0


Salida:
Cadena : anita lava la tina
Palindrome

Cadena : la ruta nos aporto otro paso natural
Palindrome


Si quieren ahorra lineas dejenlo asi:
Código (dos) [Seleccionar]
@echo off
if exist "file.txt" (del /f /q "file.txt")
setlocal enabledelayedexpansion
:code
set /p "cadena=Cadena : "
if not defined cadena (goto:code)
set "cadena=%cadena: =%"
set "cadena_=%cadena%"
set /a "longitud-=1"
:bucle
set "cadena=%cadena:~1%"
set /a "longitud+=1"
if defined cadena goto:bucle
for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~%%_,1!" >> "file.txt"
type "file.txt" | find /i "%cadena_%" > nul 2>&1 && echo.Palindrome || echo.No palindrome
pause>nul 2>&1
exit /b 0
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Darioxhcx

adivina ya te opina ya ni miles origina ya ni cetro me domina ya ni monarcas a repaso ni mulato carreta acaso nicotina ya ni cita vecino anima cocina pedazo gallina cedazo terso nos retoza de canilla goza de panico camina onice vaticina ya ni tocino saca a terracota luminosa pera sacra nomina y animo de mortecina ya ni giros elimina ya ni poeta ya ni vida

Palindromo :P
jajaja

buena esa :P
un saludo