[Evento del Gran Baile]Seguridad informática

Topic created · 68 Mensajes · 7187 Visitas
  • si esto ya terminó yo propongo publicar los códigos (el q no quiera pues q no lo publique). Puesto que además ha habido distintos lenguajes será interesante ver las distintas soluciones.

    El mío en JS:

    function esPalindromo(a) 
    {
    	if (!document.getElementById('case-sensitive').checked) a=a.toLowerCase(); //pasamos todo a minusculas
    	if(a.length==1)
    	{
    		return true;
    	}
    	else
    	{
    		a = a.replace(/ /g,"");
    		var b = a.split("").reverse().join("");
    		if(a == b)
    		{
    			return true;
    		}
    	}
    	return false;
    }
    
    function crearPalindromo(a)
    {
    	//quitamos la primera letra
    	var b=a.substring(1,a.length);
    	//miramos si b es palindromo
    	if(esPalindromo(b))
    	{
    		return a.charAt(0)+b+a.charAt(0);
    	}
    	else
    	{
    		return a.charAt(0)+crearPalindromo(b)+a.charAt(0);
    	}
    }
    
    function escribe(texto)
    {
    	document.getElementById('salida').innerHTML = document.getElementById('salida').innerHTML + texto;
    }
    
    //programa
    function mn()
    {
    	document.getElementById('salida').innerHTML = "";
    	var cadena = document.getElementById('entrada').value;
    	var es;
    	esPalindromo(cadena) ? es="Sí" : es="No";
    	var mostrar = "**" + es + "** es un palíndromo válido.[br].[/br]";
    	if(!esPalindromo(cadena))
    	{
    		var palindromo=crearPalindromo(cadena);
    		mostrar = mostrar + "El palíndromo generado es: **" + palindromo + "**.";
    	}
    	
    	escribe(mostrar);
    }
    

    y el código html que muestra y recoge los datos:

     Tener en cuenta mayúsculas[br].[/br]
    
    
    
    [br].[/br]
    
    ---
    

    2 funciones recursivas. Corto de escribir, y corto de leer :icon_razz:

  • 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!

  • Y ammm ajajja como no puede validar que ignore los espacios solo quite esa opcion osea que no se pueda colocar espacios xD se vale ?
    Si se vale entonces ya acabe :3 :miau:

  • Por cierto, a la princesa no le importa el lenguaje de programación que uséis, dice que incluso admite PHP y JavaScript 😉

    com sea men puede ser Vb C++ Php javascrit algo que da claves para la invitiacioens y eso xD

  • Para VB puedes usar la función replace() " " por "" 🙂

  • y a quien se le enviara el código si hawking ya no esta ??? habrá que esperar hasta que el este ???

  • Un par de cosas...
    Ya lo tengo acabado (TODO MWUAHAHAHAH xD) pero... al crear al palídromo debe respetar las mayúsculas o hay que convertirlas en minúsculas?
    y al crear el palídromo, debe respetar los espacios o también debe comérselos? xD

  • pues hawking no me dijo nada sobre eso, supongo que da igual...yo también tengo todo listo :trollface: nomas lo testeare un poco por si acaso.

    P.D: por si te sirve de algo el mio respeta espacios y mayúsculas al crear el palindromo.

  • @Anghios said:

    Para VB puedes usar la función replace() " " por "" 🙂

    Especifica la funcion o metodo a que propiedad se le aplica

  • @Aquiles94 said:

    pues hawking no me dijo nada sobre eso, supongo que da igual...yo también tengo todo listo :trollface: nomas lo testeare un poco por si acaso.

    P.D: por si te sirve de algo el mio respeta espacios y mayúsculas al crear el palindromo.

    Te voy a dar un truquillo que me ha pasado a mi y un poco más y la lío xD, mete todas las funciones que tenga el botón para comprobar si es un palídromo válido dentro de un "Try", después asegúrate de que deban introducir algún texto para crear el palídromo, puesto que si no escribes nada te lo da como válido jeje: "" = "" 😛

    @archii said:

    @Anghios said:

    Para VB puedes usar la función replace() " " por "" 🙂

    Especifica la funcion o metodo a que propiedad se le aplica

    Por ejemplo:

    Replace(Textbox1.text, "a", "cosa")