Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: leogtz en 15 Junio 2009, 01:09 AM

Título: Funcion Palindrome [Batch]
Publicado por: leogtz en 15 Junio 2009, 01:09 AM
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:\>
Título: Re: Funcion Palindrome [Batch]
Publicado por: Darioxhcx en 15 Junio 2009, 05:13 AM
problema con palrabas multiples palindomes =P

anita lava la tina

es una frase palindome (?
y me tira error (?
un saludo :P
Título: Re: Funcion Palindrome [Batch]
Publicado por: leogtz en 15 Junio 2009, 05:16 AM
Lamentablemente solo funciona con 1 sola palabra, luego veo si lo soluciono.

Gracias por probar el código.
Título: Re: Funcion Palindrome [Batch]
Publicado por: leogtz en 15 Junio 2009, 05:36 AM
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
Título: Re: Funcion Palindrome [Batch]
Publicado por: Darioxhcx en 15 Junio 2009, 05:52 AM
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