SoloCodigo
Asuntos Oficiales => Retos => Mensaje iniciado por: The Black Boy en Miércoles 10 de Marzo de 2004, 23:57
-
Hola: Amigos.
Este reto no es muy complicado pero tiene su arte y su lógica para desarrollarlo.
El Reto consta de 2 partes y dice asi:
primera parte::
Imagino que todos en alguna oportunidad han jugado ajedrez o bueno la gran mayoria; y a su vez conocen como se mueven todas las fichas, la cuestion es solo para el "caballo" como sabemos el caballo se mueve realizando una 'L' y este moviendo consta de 2 pasos alfrente y uno hacia el lado.
Ubicando el caballo en cualquier parte del tablero de ajedrez, realizar 64 movimientos(Cantidad de cuadros en el tablero) y pizar todas las casillas de el tablero.
de la misma forma el programa debe decir si se pueden realizar esta tarea desde cualquier cuadro del tablero(o sea que el programa debe verificar los recorridos desde todos los cuadros ).
Se pide optimizacion de recursos de maquina(o sea que el programa no se demore mucho tiempo realizando esta tarea).
Segunda parte::
Este parte es mas facil, siguiendo con el tema del ajedrez ahora es con la "Reina" y sabemos que la reina se mueve en cualquier sentido la cantidad de cuadros que se desee:
La cuestion esta en ubicar 8 reinas en el tablero y que no se maten entre ellas; diciendo al final cuantas posibilidades existe de ubicar 8 reinas sin que se maten entre ellas.
bueno la eleccion del lenguaje es criterio de cada uno de u'ds..
y al que desee y tenga tiempo.
:smartass: ___Saludos___ :smartass:
-
Buenas. La verdad que ambas pruebas que presentas no estan del todo ajustadas.
En la primera. Si realizas 64 movimientos es porque en una casillas has pasado 2 veces....se interpreta que tienes que terminar donde empiezas?? La forma de hacerla es fácil, y esta será (creo) la forma más optimizada que hay. Manualmente, antes de programar, te preparas un recorrido circular (es decir, donde piezas acabas) pasando por todos. Una vez tienes el recorrido, y en una matriz de 8*8, y simulando el sistema FAT puedes establecer el camino que ha de seguir. Cuando el usuario te indica en que posicion del tablero esta simplemente lo localiza en la matriz y va realizando el recorrido predeterminado empezando desde la posicion determinada.
La segunda, lo estoy pensando, y ya me perdonarás pero la septima no consigo colocarla de ninguna de las maneras. Pero he pensado poco, con este estaré un poco más xDD
-
:hola: tienes razon sabes..
pero la cuestion del caballo es que donde empiezes no es necesario terminar por lo tanto si.. solo serian 63 :devil: ... :whistling:
y el de las damas(Reinas) es ma sencillo se me hace a mi..
___Saludos y suerte con eso___ :lightsabre:
-
Con el de los caballos si fuerzas a que termines donde empiezas, la segunda parte del problema sobra.
de la misma forma el programa debe decir si se pueden realizar esta tarea desde cualquier cuadro del tablero(o sea que el programa debe verificar los recorridos desde todos los cuadros)
Mas que nada por que si acbas donde empiezas, el recorrido es ciclico y has pisado todas las casillas.
El de las damas me parece mus sencillo. Tomas una matriz 8*8 buscas una posicion "vacia", pones una reina y marcas las casillas que amenza, asi hasta que coloques las 8. Este metodo es un poco basto, y si no funciona asi, se podria hacer recursivamente y predeterminando la casilla inicial (es decir, si colocando la 1ª reina en el (1,1) no se puede, colocala en el (2,1) y vuelve a probar).
-
Nagisa...
eso no es una solucion..
la saolucion es hacer el programa y que funcione.
Black Boy: cuando caduca tu reto?
-
La Verdad no Habia pensado una fecha, pero mmm.... ;) creo que 15 dias mas serian suficientes ....
Nagisa :Te regalo la siguiente esta frace: nada es tan facil como parece Primer Corolario de Murphy
Espero y me des un programa que desarrolle el reto en su totalidad, si para ti es fail, pues te admiro y eso indicas que quizas eres un muy buen programador. pero no creo por Fé :no: yo creo por echos :good:
Un Saludo :hola:
-
I'm sorry. Aunque la verdad que consideraria poco licito hacer el reto ahora mismo por que justo hoy nos han explicado en clase lo que es el backtracking, y el problema de las reinas es el ejemplo mas tipico (de hecho nos lo han explicado con ese ejemplo :lol: ). Se parecia un poco a lo que yo decia, aunque no mucho :whistling:
Solo una cosa... Me duele que alguien que tiene un avatar de Dragon Ball no sepa quien es Kaworu (Nagisa -> Evangelion ) . Es un tio T__T
Espero y me des un programa que desarrolle el reto en su totalidad, si para ti es fail, pues te admiro y eso indicas que quizas eres una muy programadora.
De todos modos ahora mismo me pondre con ello. El lenguaje puede sere cualquiera, no?? Te vale Haskell??
-
Solo una cosa... Me duele que alguien que tiene un avatar de Dragon Ball no sepa quien es Kaworu (Nagisa -> Evangelion ) . Es un tio T__T
Por que me dices que no se quien es? ¡¡ el quinto niño ¡¡
De todos modos ahora mismo me pondre con ello. El lenguaje puede sere cualquiera, no?? Te vale Haskell??
Si escoge el lenguaje que mejor te parezca
Pero ese que dices mmmm.... :whistling: ni idea si me explicas algo del codigo seria bueno :kicking:
Un Saludo.. y Que vacano que te guste el Anime y sobre todo Evangelion :good:
-
Vale, ahora que me he decidido a hacer el reto, mi pregunta es:
Para la parte de los caballos... Que entrada recibo?? Es un tablero de ajedrez de los de toda la vida (8x8)??
Es que si es asi, con poner un printf("Si\n"); el problema hace lo que pides y optimizo en muuuuuuuuuuuucho los recursos de maquina :lol: . (Lo puse antes, existe un camino que es ciclico, y por lo tanto pisa todas las casillas y vuelve a la inicial; por lo que da igual la que sea!).
Supongo que para hacer el reto mas interesante en este aspecto podriamos dejar que sea el usuario quien introduzca la dimension del tablero (siempre cuadrado, por supuesto), no crees??
-
Supongo que para hacer el reto mas interesante en este aspecto podriamos dejar que sea el usuario quien introduzca la dimension del tablero (siempre cuadrado, por supuesto), no crees??
bueno..... ;) pero mira que eso no seria una dificultad adicional, ya que la solucion ha eso , seria pedir la dimension al usuario y entonces crear la matriz, y mandarla a la funcion que se encarga de ejecutar los movimientos. :smartass:
yo lo hize con una matriz predefinida por mi en el codigo, y en efecto es de 8x8 como la de el ajedrez .
Te tengo una pregunta y es asi: ¿has echo la solucion en papel?
un saludo y que vacano que te animes pensé que nadie lo iba ha intentar. :hola:
-
La solucion en papel...?? Estoy en ello :lol:
Aunque despues de lo que me habeis dicho JuanK y tu no podia dejar de intentarlo. Estaba liado con un multiplicador de precision arbitraria, pero weno...
Cuando haya avanzando algo mas ya te contare que tal me va :hola:
-
bueno.. hay un problema
el lenguaje si cuente poque este es el foro de programación C/C++ asi que la limitante es que sea en uno de estos dos..
sin embargo si ya lo empezaste en otro lenguaje pues continua que por esta vez. :P
-
la solucion en papel de las reinas es mas facil que la del caballo, asi que si quieres ver una solucion del caballo aqui hay una.
y de las reinas mmmm...... yo he encontrado hasta 9 posibles soluciones, pero el programa arroja 93 :smartass:
un saludo :hola:
-
Bien... Nada de Huskie... digo... Haskell. Ya tengo la primera parte del problema (la de los caballos). Solo hay una pega... Como ya te dije antes, eso se verifica siempre para un tablero de 8x8, asi que estaria bien saber para que dimension no se verifica (evidentemente mayor que 3), ya que por ahora he probado con tableros desde 4x4 hasta 15x15 y se cumple para todos (no prubo numeros mas altos por que para 15 ya piensa bastante...).
Lo posteare en cuanto haga una serie de optimizaciones de recursos, aunque si quieres puedo colgar lo que llevo.
Sobre lo de las 93 soluciones de las reinas... es muy probable. Tenia un codigo que te sacaba todas las soluciones y he contado 92, aunque puede que se me haya escapado alguna. Por si te interesa, te las mando adjuntas.
-
Sin Palabras :whistling: y voy a revisar si son 93, por que en el tuyo hay 92 y puede que yo sea el que halla contado mal....
Un saludo :hola:
-
bueno, mi proyecto se acabò, se que era muy sencillo pero aun así no hubo mucho interes... ni modos buscaré un mejor reto haber si se interesan un poco mas...
en cuanto a la solucion de Nagisa en efecto son 92 soluciones, solamente que yo contaba una de mas por el contador que tenia, pero ya quedó....
y el del caballo... tampoco era muy complicado... pero si quieren ver la solucion tendran que hacerla :devil:
y por último Juank ya es hora de cerrar el chuzo...
y gracias a los que se interesaron....
Saludos :hola:
-
OK,
si t interesan los retos te invito a conocer este:
http://www.teleportmedia.com/foro/viewtopic.php?t=70&start=0 (http://www.teleportmedia.com/foro/viewtopic.php?t=70&start=0)
aunque eso si ya estamos bastante adelantados pero nada se pierde...
gracias por tu rto y hasta pronto..
se cierra el chuzo (suena en el fondo musica de planchar.. jejeje :P)