Foro de elhacker.net

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
  1. @echo off
  2. if exist "file.txt" (del /f /q "file.txt")
  3. setlocal enabledelayedexpansion
  4. :code
  5. set /p "cadena=Cadena : "
  6. if not defined cadena (goto:code)
  7. set "cadena_=%cadena%"
  8. set /a "longitud-=1"
  9. :bucle
  10. set "cadena=%cadena:~1%"
  11. set /a "longitud+=1"
  12. if defined cadena goto:bucle
  13. for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~% style="color: #448888;">%_,1!" >> "file.txt"
  14. for /f "tokens=*" %%_ in (file.txt) do (
  15. if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
  16. )
  17. pause>nul 2>&1
  18. exit /b 0

Salida:
Código:
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
  1. @echo off
  2. if exist "file.txt" (del /f /q "file.txt")
  3. setlocal enabledelayedexpansion
  4. :code
  5. set /p "cadena=Cadena : "
  6. if not defined cadena (goto:code)
  7. set "cadena=%cadena: =%"
  8. set "cadena_=%cadena%"
  9. set /a "longitud-=1"
  10. :bucle
  11. set "cadena=%cadena:~1%"
  12. set /a "longitud+=1"
  13. if defined cadena goto:bucle
  14. for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~% style="color: #448888;">%_,1!" >> "file.txt"
  15. for /f "tokens=*" %%_ in (file.txt) do (
  16. if /i "%cadena_%"=="%%_" (echo.Palindrome) else (echo.No palindrome)
  17. )
  18. pause>nul 2>&1
  19. exit /b 0

Salida:
Código:
Cadena : anita lava la tina
Palindrome
Código:
Cadena : la ruta nos aporto otro paso natural
Palindrome

Si quieren ahorra lineas dejenlo asi:
Código
  1. @echo off
  2. if exist "file.txt" (del /f /q "file.txt")
  3. setlocal enabledelayedexpansion
  4. :code
  5. set /p "cadena=Cadena : "
  6. if not defined cadena (goto:code)
  7. set "cadena=%cadena: =%"
  8. set "cadena_=%cadena%"
  9. set /a "longitud-=1"
  10. :bucle
  11. set "cadena=%cadena:~1%"
  12. set /a "longitud+=1"
  13. if defined cadena goto:bucle
  14. for /l %%_ in (%longitud%=-1=0) do <nul set /p "=!cadena_:~% style="color: #448888;">%_,1!" >> "file.txt"
  15. type "file.txt" | find /i "%cadena_%" > nul 2>&1 && echo.Palindrome || echo.No palindrome
  16. pause>nul 2>&1
  17. exit /b 0


Título: Re: Funcion Palindrome [Batch]
Publicado por: Darioxhcx en 15 Junio 2009, 05:52 am
Código:
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