Youtube Video
La princesa desea organizar un gran baile, pero no admite que la gente se cuele. Para ello, ha incluido un código de seguridad en todas las tarjetas, pero la gente empieza a inventarse los suyos propios. Sin embargo, todos los códigos de la princesa eran palíndromos, es decir, se leen igual al derecho y al revés. Un ejemplo es la palabra "reconocer". De esa forma la princesa puede saber si es un código válido o no. Para eso necesita vuestra ayuda, porque tiene que revisar muchas invitaciones. Además, para no ponerlo tan fácil el código puede llevar espacios en blanco. Por ejemplo, este sería un código válido.
Ana lleva al oso la avellana
La princesa aún no ha terminado de escribir todas las invitaciones, así que también le gustaría que le ayudaras a crear nuevos códigos. Pero no le gustan muy largos. Concretamente, la princesa quiere que, dada una palabra sin espacios en blanco, la conviertas en palíndromo utilizando el menor número de letras posible. Por ejemplo:
civic se queda igual
abc se convierte en abcba
sedentario se convierte en sedentarioiratnedes
bottle se convierte en bottlelttob
interviene se convierte en intervieneivretni
Sin embargo, para los programadores novatos, la princesa se conforma con comprobar si una palabra es un código válido, sin necesidad de ignorar los espacios en blanco ni de no distinguir entre mayúsculas y minúsculas. Pero estoy seguro de que la princesa tendrá en cuenta a todos los que consigan alguna de las siguientes funciones en su programa:
- Ignorar los espacios en blanco, y por tanto, que "ana lleva al oso la avellana" sea un código válido.
- No distinguir mayúsculas de minúsculas, y que, por tanto, "ReConOcEr" sea un código válido.
- Dada una palabra, ser capaz de encontrar el palíndromo más corto que la contenga.No es necesario que vuestros programas puedan procesar letras acentuadas u otros caracteres especiales, porque la princesa no los usará. Por lo tanto esto no se tendrá en cuenta para bien ni para mal.
Descargar programa de ejemplo
Aún está por decidir a quién tenéis que enviar el código fuente para que os los corrija, pero eso sí:
está prohibido postear códigos fuente de vuestros programas en este hilo. En lugar de eso enviadlos por MP. Si alguien lo termina hoy me lo puede mandar a mí, pero mañana ya no estaré.
Por cierto, a la princesa no le importa el lenguaje de programación que uséis, dice que incluso admite PHP y JavaScript
Para los que programéis en C++, es posible que os sean útiles las funciones toupper() y tolower() de la librería . toupper() recibe un carácter, y devuelve el mismo carácter salvo que sea una letra minúscula, en ese caso devuelve la misma letra pero mayúscula. tolower() hace lo mismo pero al revés, recibe un carácter, y devuelve el mismo carácter salvo que sea una letra mayúscula, en ese caso devuelve la misma letra en minúscula. Los que programéis en otros lenguajes seguro que encontraréis funciones similares con un nombre parecido. Puede que se llamen toUpperCase() y toLowerCase() o algo por el estilo.
El concurso está terminado. Aquí tenéis el código fuente del programa solucionado.
[attachment=0]
Ahora solo queda elegir al ganador. Hablaré con Lunnaris para ver si puedo dar varios ganadores, porque no me gustaría que solo se reconociera el trabajo de uno de los que lo han logrado. ¡Un saludo a todos!