Foros del Web » Programación para mayores de 30 ;) » Programación General »

Segunda competencia para programadores

Estas en el tema de Segunda competencia para programadores en el foro de Programación General en Foros del Web. Lo de instalar el Runtime era una broma pues iba seguido por el ícono > . Lo que sí es que no me parece correcto ...

  #31 (permalink)  
Antiguo 23/09/2008, 14:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Exclamación Respuesta: Segunda competencia para programadores

Lo de instalar el Runtime era una broma pues iba seguido por el ícono > .

Lo que sí es que no me parece correcto usarlo debido a que los controles se crean sin usar nada de código .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #32 (permalink)  
Antiguo 23/09/2008, 14:24
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Ja, ja....
Oooops ... no comprendí bien!

Es cierto ... los controles se crean sin usar código, pero no son importantes. Creo que lo que se califica principalmente es la forma como manejaron los movimientos de las casillas del juego, y eso no lo hace ningún IDE, etc.

Habría que aclarar que lo mas importante no es la parte gráfica.

Aunque en lo personal, a mi aplicación le agregue una parte gráfica muy presentable. Que tengo entendido que no va a ser tomado muy en cuenta (más que para los usuarios que no sepan que esa no es la parte más importante).

Saludos,
  #33 (permalink)  
Antiguo 23/09/2008, 17:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Hola,

acabo de leer el tema, y tengo unas sugerencias para este, pero mas que nada para el siguiente concurso.


Concurso Actual
¿Que les parece que gane (o al menos que obtenga muchos puntos extras) el que resuelva el algoritmo en menos tiempo? Es MUY facil agregarle esa funcion, y ahi se sabria con exactitud quien hizo el algoritmo mas rapido.

Proximo Concurso
Lo mas importante es sentar bien las bases.

Que sean inamovibles. Mis sugerencias:

1.- Primero que nada, que se avise con 1 semana de anticipacion, cuando se daran a conocer las bases para el siguiente concurso.

2.- Ese dia dar los requerimentos y el tiempo de entrega (por ejemplo, subirlo el lunes 15 de octubre a las 12pm en GMT-6)

3.- Definir que lenguajes estan permitidos, o mas facil, que lenguajes NO estan permitidos.

4.- Definir la plataforma. Sugiero que la plataforma default sea windows. Los que quieran codear sobre linux, mac u otro sistema operativo, deberan tener mas cuidado, ya que deben de asegurarse que su codigo sea recompilable y ejecutable sobre windows.
4.1-Aquellos que programen sobre un OS que no es windows, deben de proporcionar las instrucciones detalladas de lo que se necesita para compilar y correr su aplicacion.

5.- Sugiero que NO se tome en cuenta el codigo. Es decir, imaginense que participan 10 y todos en lenguajes diferentes (pascal, basic, c#, c++, java, python, ect...). Dar puntos por codigo limpio va a depender demasiado de los conocimientos del juez, y lo ideal es que todos seamos los jueces.

6.- Definir exactamente como se eligira al ganador. Para esto, propongo que todos seamos jueces, y existan unas 5 categorias.
Por ejemplo, se puede calificar del 1 al 10:
-Presentacion
-Estabilidad (que no crashee)
-Facilidad de instalar
-Diversion
-Funcionalidad (que realmente haga lo que tiene que hacer, si alguien le agrego cosas extras, se le pueden dar mas puntos).

Extra: Tiempo de ejecucion de los algoritmos. El que lo haga mas lento, recibe 0 puntos, el segundo mas lento recibe 1 punto, y asi se va hasta llegar al mas rapido.

Esas son mis sugerencias.
  #34 (permalink)  
Antiguo 26/09/2008, 19:03
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 17 años, 3 meses
Puntos: 5
Respuesta: Segunda competencia para programadores

Cita:
Iniciado por David el Grande Ver Mensaje
Lo de instalar el Runtime era una broma pues iba seguido por el ícono > .

Lo que sí es que no me parece correcto usarlo debido a que los controles se crean sin usar nada de código .
Te intimidas ante vbasic XD

Quiero aprender otro lenguaje.... me siento muy limitado con VB
__________________
*en construccion*
  #35 (permalink)  
Antiguo 27/09/2008, 10:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
De acuerdo Respuesta: Segunda competencia para programadores

Cita:
Iniciado por Jhonnyf Ver Mensaje
Te intimidas ante vbasic XD

Quiero aprender otro lenguaje.... me siento muy limitado con VB
De ninguna forma, pues yo también podría hacerlo con Visual Basic si así quisiera. Cuanto más lenguajes aprendes mejor, te recomiendo que aprendas C o Python que son lenguajes más potentes, y muchos otros que hay por ahí.

Saludos . Éxitos con el jueguito.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #36 (permalink)  
Antiguo 27/09/2008, 14:53
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Y que paso por fin con esto?


Cita:
Iniciado por Jhonnyf Ver Mensaje
me siento muy limitado con VB
si es el 6, lo estas jeje.
Si es el .NET esta bien.
  #37 (permalink)  
Antiguo 05/10/2008, 13:33
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Hola,

¿ En que momento hay que presentar el proyecto ?
¿ Por los diferentes husos horarios ?

Es decir, estamos a 5 de Octubre, y la fecha límite es el 6.
El proyecto sigue en pie y continuamos con las mismas reglas ... ?

Puedo mostrar mi juego ... poner el vínculo ... ya ?
Faltan 6 minutos ... ... bromita !

Saludos,

Última edición por HackmanC; 05/10/2008 a las 23:54 Razón: vínculo ?
  #38 (permalink)  
Antiguo 05/10/2008, 14:40
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Segunda competencia para programadores

Hola, me disculpo de verdad, por mi falta de irresponsabilidad, no boy a poder
entregar el programa, que estube muy liado ultimamente y los pocos momentos
que tube para programar no puede resolber el maldito algoritmo que lo resolbiera solo -.-
  #39 (permalink)  
Antiguo 06/10/2008, 07:18
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Segunda competencia para programadores

Hola, disculpen mi ausencia XD, pero no voy a poder entregar el jueguito, la verdad es que no he tenido tiempo para nada y no he echo casi nada, lo siento, pero para otra competencia intentaré asistir, gracias por su comprensión

54LU2
y lo siento
  #40 (permalink)  
Antiguo 06/10/2008, 09:06
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 9 meses
Puntos: 142
Respuesta: Segunda competencia para programadores

Bueno, es ya el último día, así que nos toca a todos presentar nuestros proyectos. El que no lo entregue hoy ya no podrá participar (Dejemos las 00:00 en cada hora local como límite).

Por mi parte, temo compartir que mi proyecto quedó a la mitad, pues nunca pude deducir la IA que necesitaría el programa para resolver el juego por si mismo (Una creación solo es tan buena como su creador, y yo apenas si resuelvo el juego moviendo fichas al azar casi ).

Así que quedando yo descalificado, solo me queda ver los resultados de los competidores. Suerte a todos
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #41 (permalink)  
Antiguo 06/10/2008, 10:37
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Hola,

Bueno, bueno... no hay problema. Realmente yo si tuve bastante tiempo disponible, y creo que la lógica de programación no era sencilla. Me extendí bastante en algunos aspectos; pero creo que cumple con todos los requisitos solicitados. En velocidad no es muy eficiente, repite muchas operaciones. Todos los detalles están en la página de Lycos. (NO muestra el Applet en Java en la página principal).

Pero igual ... aquí está mi juego ...

http://hackmangt.tripod.com/JPuzzle/index.html



JPuzzle Copyright © 2008 HackmanGT

Saludos,

ps:

In Lycos hay un límite de 1 Gb. de transferencia mensual, así que posiblemente los últimos en verlo les muestre un mensaje que se acabó el ancho de banda. Esta liberado como Open Source.

Última edición por HackmanC; 06/10/2008 a las 11:14 Razón: imagen
  #42 (permalink)  
Antiguo 06/10/2008, 11:33
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Hola hackmanC, felicidades por tu proyecto. Me gusto mucho que no solo te dedicaste a resolver el problema especifico de 3x3, sino que lo extendiste a nxn. Ademas, la documentacion es buena y el codigo en general es bastante ordenado y legible (no lo lei a detalle). Por lo que lei, se ve que aprendiste bastante con este proyecto, lo cual se me hace muy importante.

Mi unica gran queja, es que tu algoritmo para resolverlo es bastante pobre (es una critica constructiva), el de 3x3 lo probe un par de veces, y y no siempre se tardaba lo mismo, y a veces solo tenia que mover las 2 piezas de abajo hacia la izquierda y movia otras que no tenia caso, lo cual me hace suponer que es a prueba y error. El de 10x10 se llevo casi 9 minutos en resolverlo, 9!!!

Para mi gusto, debiste pasar mas tiempo en pensar mejor tu algoritmo que darle todos esos detalles bonitos. El buen funcionamiento en los videojuegos es basico, y ahi tuviste una gran falla. En mi muy particular punto de vista, si alguien viene con un algoritmo que resuelva el nxn de una manera claramente superior, aun cuando su programa fuera en modo texto, y sin esa documentacion, el deberia ganar.

No lo tomes a mal, mi intencion fue dar una opinion lo mas objetiva posible.

saludos,
  #43 (permalink)  
Antiguo 06/10/2008, 12:17
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 9 meses
Puntos: 88
Respuesta: Segunda competencia para programadores

bueno HackMan muy interesante... asi hasta ganas de jugar dan para resolver el jueguito
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #44 (permalink)  
Antiguo 06/10/2008, 14:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
De acuerdo Respuesta: Segunda competencia para programadores

Después de ver el trabajo publicado se me fueron las ganas de publicar el mío (que de hecho no he mirado en las últimas 2 semanas ).

Cita:
Iniciado por blackwind
En mi muy particular punto de vista, si alguien viene con un algoritmo que resuelva el nxn de una manera claramente superior, aun cuando su programa fuera en modo texto, y sin esa documentacion, el deberia ganar.
No le mires al mío, porque la forma de resolver es igual de mediocre o peor . Irresponsabilidad mía dejarlo de la misma forma como estaba.

Bueno, pero como para no dejarle a HackmanC participar solito, aquí va:

Archivo: 8puzzle.py
Descripción: Menú Principal
Código python:
Ver original
  1. from modgame import game
  2. from os import system
  3. def main():
  4.     """Esta es la parte principal del programa"""
  5.     mainmenu()
  6.     menu=0
  7.     while menu<1 or menu>3:
  8.         item = raw_input("Opcion: ")
  9.         if item.isdigit(): menu=int(item)
  10.         if menu==1:
  11.             play = "s"
  12.             while play.lower()=="s":
  13.                 game()
  14.                 play = ""
  15.                 while play.lower()!="s" and play.lower()!="n":
  16.                     play = raw_input("Jugar de Nuevo? (S/N) ")
  17.         if menu==2:
  18.             print("El objetivo del Juego es mover el cursor hasta que\ntodos los numeros esten en forma secuencial")
  19.             print("y el cursor se encuentre en la ezquina inferior derecha.")
  20.             print("Para mover el cursor use los numeros 2(abajo),\n4(izquierda), 6(derecha) y 8(arriba)")
  21.             print("Para desistir del juego escriba 's', en ese caso\nel puzzle se completara automaticamente")
  22.             print("")
  23.             print("Presiona Intro para continuar")
  24.             raw_input()
  25.             mainmenu()
  26.             menu = 0
  27.         if menu==3: quit()
  28. def mainmenu():
  29.     system("clear")
  30.     """Imprime el menu Principal"""
  31.     print("Bienvenido al juego del 8 Tiles Puzzle")
  32.     print("(C) David el Grande - ForosDelWeb.com")
  33.     print("")
  34.     print("1- Jugar")
  35.     print("2- Ayuda")
  36.     print("3- Salir")
  37.     print("")
  38.  
  39. main()
Archivo: modgame.py
Descripción: Módulo del programa, contiene el juego en sí.
Código python:
Ver original
  1. from random import random
  2. from os import system
  3. def printgame(var, header=""):
  4.     """Imprime el estado actual del Juego"""
  5.     system("clear")
  6.     if header!="": print(header)
  7.     print("")
  8.     print(" "+var[:1]+" | "+var[1:2]+" | "+var[2:3])
  9.     print("---|---|---")
  10.     print(" "+var[3:4]+" | "+var[4:5]+" | "+var[5:6])
  11.     print("---|---|---")
  12.     print(" "+var[6:7]+" | "+var[7:8]+" | "+var[8:9])
  13.     print("")
  14. def randomize(min,max):
  15.     """Genera un numero aleatorio entre Minimo y Maximo-1 (Maximo no se incluye)"""
  16.     return min + int(random() * (max-min))
  17. def randommoves(var):
  18.     """Realiza jugadas aleatorias para que el tablero inicie desordenado"""
  19.     moves = "8"
  20.     count = 0
  21.     while count<20: #Realizaremos 20 jugadas aleatorias
  22.         currentpos = var.find("_")
  23.         randomic = randomize(0,4) #Generamos una direccion aleatoria
  24.         movepos = move(randomic, currentpos) #Calculamos la posicion hacia esa direccion
  25.         if movepos > -1 and str(movepos) != moves[len(moves)-2:len(moves)-1]: #Comprobamos que sea un movimiento valido y que no sea igual al penultimo
  26.             count += 1
  27.             moves += str(movepos)
  28.             var = var[:currentpos] + var[movepos:movepos + 1] + var[currentpos + 1:]
  29.             var = var[:movepos] + "_" + var[movepos + 1:]
  30.     return [var, moves] #Devolvemos una lista con el estado del tablero y los movimientos realizados
  31. def game():
  32.     """Inicia el juego"""
  33.     is_easy = True
  34.     while is_easy:
  35.         state = "12345678_"
  36.         [state, moves] = randommoves(state) #La variable moves la usaremos para resolver el tablero
  37.         is_easy = (state[:3]=="123" or state[3:6]=="456" or state[6:9]=="789") #Si es muy facil volvemos a realizar los movimientos aleatorios
  38.     game_finish = False
  39.     count = 0
  40.     printgame(state, "Movimientos: 0")
  41.     while not game_finish:
  42.         currentpos = state.find("_")
  43.         direction = raw_input("Ingrese una direccion: ")
  44.         if "2468".find(direction) > -1 and len(direction) == 1:
  45.             movepos = move("2468".find(direction), currentpos)
  46.             if movepos > -1: #Comprobamos que sea un movimiento valido
  47.                 moves += str(movepos)
  48.                 state = state[:currentpos] + state[movepos:movepos + 1] + state[currentpos + 1:]
  49.                 state = state[:movepos] + "_" + state[movepos + 1:]
  50.                 count += 1
  51.                 printgame(state, "Movimientos: " + str(count))
  52.                 if state=="12345678_": game_finish = True
  53.         if direction.lower() == "s":
  54.             confirm = ""
  55.             while confirm.lower()!="s" and confirm.lower()!="n":
  56.                 confirm = raw_input("Realmente desea desistir? (S/N) ")
  57.             if confirm.lower()=="s": game_finish = True
  58.     if direction.lower() != "s":
  59.         print("Lograste resolver el puzzle!!! :-)")
  60.     else:
  61.         solution(state, moves + " ")
  62. def solution(var, moves):
  63.     """Solucionamos el puzzle, retrocediendo todos los movimientos"""
  64.     from time import sleep
  65.     for looping in range(3, len(moves) + 1): #Empezamos el bucle con 3 porque descartamos el espacio al final y tambien el ultimo movimiento
  66.         movepos = int(moves[-looping:-looping+1])
  67.         currentpos = var.find("_")
  68.         var = var[:currentpos] + var[movepos:movepos + 1] + var[currentpos + 1:]
  69.         var = var[:movepos] + "_" + var[movepos + 1:]
  70.         sleep(0.5) #Esperamos un segundo para realizar el proximo movimiento hacia la solucion
  71.         printgame(var, "No lograste resolver el puzzle. :-(")
  72. def move(direction, currentpos):
  73.     """Devuelve la posicion que debe ocupar el cursor al mover hacia una direccion"""
  74.     position = (3,-1,1,-3)[direction] #Segun la direccion obtenemos la posicion con la que debemos cambiar
  75.     if abs(position) == 1 and abs(((position + currentpos) % 3) - (currentpos % 3)) != 1: return -1 #Si pasa a otra fila no realizamos el movimiento
  76.     position += currentpos
  77.     if position < 0 or position > 8: return -1 #Si sale del tablero no realizamos el movimiento
  78.     return position
Archivo: clear.bat
Descripción: <sarcasmo>El archivo principal del proyecto</sarcasmo>. Solo sirve para que el borrado de pantalla funcione en Windows .
Código:
cls
Felicidades, HackmanC por ganar la competencia .

P.S.: ¿De veras es necesario hacer una votación? .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #45 (permalink)  
Antiguo 06/10/2008, 14:49
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Cita:
Iniciado por blackwind Ver Mensaje
Hola hackmanC, felicidades por tu proyecto.
Gracias !

Cita:
Iniciado por blackwind Ver Mensaje
Mi unica gran queja, es que tu algoritmo para resolverlo es bastante pobre (es una critica constructiva), el de 3x3 lo probe un par de veces, y y no siempre se tardaba lo mismo, y a veces solo tenia que mover las 2 piezas de abajo hacia la izquierda y movia otras que no tenia caso, lo cual me hace suponer que es a prueba y error.
No hay problema. .

Realmente el algoritmo no es a prueba y error; cada movimiento lo calcula en base a muchos factores; (mira la clase Cerebro().Resolver(), especialmente la función encontrarMejorPosicion() y encontrarMejorMovimiento()); pero sí tienes mucha razón que es un algoritmo deficiente en algunos aspectos.

Es deficiente, por que no revisa si la pieza ya está en su lugar antes de comenzar a intentar resolverlo. Por ejemplo si la pieza número 8 ya está puesta en su lugar, ya no debería intentar resolverla; pero él prueba ir a la posición más cercana del 8 y para eso ya realizó muchos movimientos innecesarios. Y otros casos parecidos (en algunos casos si lo hace otras veces no, dependiendo de algunos factores).

Creo que le hace falta optimización.
Se gana exactitud, pero se pierde legibilidad del código (se vuelve demasiado complejo).

Cita:
Iniciado por blackwind Ver Mensaje
El de 10x10 se llevo casi 9 minutos en resolverlo, 9!!!
Lo resolviste con la opción 'animar' activada. Para resolver el de 10x10 utiliza aproximadamente 3,400 movimientos, y hace una pausa de 125 milisegundos entre cada uno.

3400 * 125 = 425000 milisegundos / 1000 = 425 segundos / 60 = 7 minutos. + overhead.

Más el overhead de hacer el paint(), etc. Sin la opción 'animar' activada lo resuelve mucho más rápido, en un procesador de mediana velocidad, en un Intel Dual Core 2.8 Ghz., lo resuelve en 1.2 segundos (sin animación).

La opción 'animar' la puedes desactivar en cualquier momento, inclusive cuando lo está resolviendo o desordenando.

Cita:
Iniciado por blackwind Ver Mensaje
El buen funcionamiento en los videojuegos es basico, y ahi tuviste una gran falla. En mi muy particular punto de vista, si alguien viene con un algoritmo que resuelva el nxn de una manera claramente superior, aun cuando su programa fuera en modo texto, y sin esa documentacion, el deberia ganar.
Creo que tiene un funcionamiento bueno, por que no falla. (O por lo menos aceptable, puesto que no tira ninguna excepción). Mi objetivo no era que lo resolviera con la menor cantidad de movimientos posible, ni que fuera el más rápido. (No estaba dentro de las reglas del juego iniciales). De otra forma lo hubiera realizado en C o Assembler.

También de esta forma provee un margen de error, que permite al jugador ganarle a la PC algunas veces. Creo que cualquiera de los participantes u otros programadores de foros del web, pueden mejorar ese código; creo que mi objetivo no era ganar; lo disfrute mucho.

Cita:
Iniciado por blackwind Ver Mensaje
No lo tomes a mal, mi intencion fue dar una opinion lo mas objetiva posible.
No hay problema, realmente es intersante leer la mayor cantidad de comentarios. Y creo que lo podría haber realizado mucho mejor, pero ... eso es otra historia. Mi objetivo no era ganar, sino competir ... y como siempre, tratar de impresionarme a mi mismo.



Cita:
Iniciado por Shiryu_Libra Ver Mensaje
bueno HackMan muy interesante... asi hasta ganas de jugar dan para resolver el jueguito
Gracias, (y eso que las imágenes de prueba no fueron publicadas)
  #46 (permalink)  
Antiguo 06/10/2008, 17:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Hola, como ultimo comentario:

Cita:
Iniciado por HackmanC Ver Mensaje
Creo que tiene un funcionamiento bueno, por que no falla. (O por lo menos aceptable, puesto que no tira ninguna excepción). Mi objetivo no era que lo resolviera con la menor cantidad de movimientos posible, ni que fuera el más rápido. (No estaba dentro de las reglas del juego iniciales). De otra forma lo hubiera realizado en C o Assembler.
Java tambien es utilizado para videojuegos 3D (practicamente nada comparado con C++, pero he visto uno que otro motor por ahi que se ve bien).
El lenguaje no tiene la culpa. Es cierto que con C pudiste haber mejorado tu tiempo, pero a lo mucho de 1.2 segundos, a 1 segundo. Ya que donde se produce el overhead de java es al hacer los metodos de dibujo, y no tanto del manejo de numeros.

Por otro lado, yo no lo veo con un buen funcionamiento, ya que consume demasiados recursos. Tengo 1.5 gbs de memoria ram, con un core2duo T7200 a 2ghz y una nvidia 7900, y con tu aplicacion corriendo, mas mi musica, un video y otra ventana mas de firefox, dejo practicamente paralizada mi compu.

Ademas, 1.2 segundos es demasiado tiempo. Un algoritmo normal, sin ningun tipo de optimizacion o tecnica especializada, deberia resolverlo en maximo 1/10 de ese tiempo, y ya es mucho tiempo. Tu programa quedo muy bonito, pero como programador, fallaste en la parte que realmente importa.

Realmente espero que no lo tomes como un ataque, pero es mi punto de vista como alguien que programa videojuegos, y te recalco esto, porque siento tu crees que hiciste un mejor trabajo del que realmente presentaste, y me di cuenta por esto:

Cita:
Iniciado por HackmanC Ver Mensaje
Mi objetivo no era ganar, sino competir ... y como siempre, tratar de impresionarme a mi mismo.

saludos,
  #47 (permalink)  
Antiguo 06/10/2008, 17:52
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Hola,

Cita:
Iniciado por David el Grande Ver Mensaje
... Bueno, pero como para no dejarle a HackmanC participar solito, aquí va: ...


Excelente !

Tu forma de solucionar el tablero se me ocurrió hasta el día de ayer. Evidentemente es mucho más eficiente, en este juego.

Tomando en cuenta la eficiencia del manejo de los vectores, la sencillez del código para solventar el problema, la sencillez de la validación de los movimientos... y que el juego logre su objetivo.

Eliminando la parte gráfica, yo creo que en base a los requerimientos tu código está más que impresionante.

Saludos.
  #48 (permalink)  
Antiguo 06/10/2008, 18:02
 
Fecha de Ingreso: junio-2008
Ubicación: Ensenada, Baja California, México
Mensajes: 28
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Segunda competencia para programadores

Cita:
Iniciado por blackwind Ver Mensaje
... y otra ventana mas de firefox, dejo practicamente paralizada mi compu.
...
Ahí está el detalle mi buen
  #49 (permalink)  
Antiguo 06/10/2008, 18:29
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Hola,

Cita:
Iniciado por blackwind Ver Mensaje
... y te recalco esto, porque siento tu crees que hiciste un mejor trabajo del que realmente presentaste, y me di cuenta por esto: ...
Lo que quise dar a entender es que me impresiona "a mi mismo" haber logrado realizar por lo menos eso, lo que sucede es que mi falta de experiencia en programación hace que mi aplicación no sea buena. (No sé que fue lo que entendiste)

Y no es culpa de Java, simplemente que mi algoritmo es lento y complicado; y muy ineficiente. Y no importa lo de C, por que primero lo hubiera tenido que aprender.

Y si fallé en tiempos, eficiencia, presentación o cualquier otra cosa, pues es una lástima; yo logré el objetivo que deseaba y me siento muy satisfecho, así como aprendí muchas cosas nuevas, limé asperezas con un viejo amigo, y lo disfruté al máximo.

Y lo de ganar es lo que menos me preocupa.

Saludos.
  #50 (permalink)  
Antiguo 06/10/2008, 18:38
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 9 meses
Puntos: 88
Respuesta: Segunda competencia para programadores

aqui lo que realmente importa.... es la diversion

no se preocupen demasiado sobre la programacion, entre todos se podra analizar cuales fueron las debilidades o aciertos en los codigos

asi podran mirar que es lo que se puede mejorar en sus habitos de programacion

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #51 (permalink)  
Antiguo 06/10/2008, 20:22
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Cita:
Iniciado por HackmanC Ver Mensaje
así como aprendí muchas cosas nuevas, limé asperezas con un viejo amigo, y lo disfruté al máximo.
eso es muy importante.

saludos,
  #52 (permalink)  
Antiguo 06/10/2008, 20:59
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Segunda competencia para programadores

Hola,

Cita:
Iniciado por daPhyre Ver Mensaje
Bueno, un ejemplo vale más que mil palabras, así que aquí dejo un ejemplo del popular 15-puzzle: http://www.javaonthebrain.com/java/puzz15/ .
Interesante ...

El ejemplo mostrado por daPhyre, también hace algunos movimientos innecesarios. Aun cuando solo necesita mover el 14 y el 15 a la izquierda. Supongo que quise hacerlo igual ... . bromita. Solo que el mio si mueve solo el 14 y el 15 en ese caso.

Saludos.

Última edición por HackmanC; 06/10/2008 a las 21:18
  #53 (permalink)  
Antiguo 07/10/2008, 08:39
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 9 meses
Puntos: 142
Respuesta: Segunda competencia para programadores

Pues todo parece indicar que solo se dieron dos participantes. ¿Haremos el voto aquí? ¿O abriremos un nuevo hilo con la opción de encuesta?
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #54 (permalink)  
Antiguo 07/10/2008, 09:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Segunda competencia para programadores

Ya mejor declarémosle a HackmanC como ganador y listo .

En este hilo hemos discutido cosas como de qué se trataría, cuáles serían las exigencias, lenguajes a utilizar, entre otras cosas, así que para facilitar la organización creo que sería más fácil crear una encuesta en otro tema como hicimos con la primera competencia .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #55 (permalink)  
Antiguo 07/10/2008, 10:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

Cita:
Iniciado por David el Grande Ver Mensaje
Ya mejor declarémosle a HackmanC como ganador y listo .

En este hilo hemos discutido cosas como de qué se trataría, cuáles serían las exigencias, lenguajes a utilizar, entre otras cosas, así que para facilitar la organización creo que sería más fácil crear una encuesta en otro tema como hicimos con la primera competencia .
hola david, sugiero que subas el ejecutable de tu codigo. y un documento de como lo resolviste. Para serte sincero, me da flojera analizar tu codigo, y estoy seguro que no soy el unico. Ademas de que ya no recuerdo nada de python jeje.

saludos,
  #56 (permalink)  
Antiguo 07/10/2008, 12:19
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Segunda competencia para programadores

holas,, yo ni siquira comense el juego, de todas maneras hubiera perdido.

pues el de hackmanc funciona, ademas de que fue el unico ejecutable que vi. lei tu codigo y permiteme decirlo no entendi ni nada.

el de David solo mostro el codigo, seria bueno que pasaras el ejecutable, aver como va en los tiempos, tu codigo es mas legible pero= no lo entiendo

abuuuuuuuuuuuu

buenos trabajos los dos, felicitaciones
  #57 (permalink)  
Antiguo 07/10/2008, 12:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: Segunda competencia para programadores

Lo cierto es que no me gusta crear ejecutables de código escrito en Python (además de que al poner solo el código que puede ser interpretado, puede ejecutarse también en Linux). Pero bueno, aquí está el .exe junto con los archivos necesarios:
http://es.geocities.com/davidnr2002/dist.zip

P.S.: Copiar y pegar el enlace en el navegador.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 07/10/2008 a las 12:40
  #58 (permalink)  
Antiguo 07/10/2008, 13:17
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 9 meses
Puntos: 88
Respuesta: Segunda competencia para programadores

Cita:
Iniciado por David el Grande Ver Mensaje
Lo cierto es que no me gusta crear ejecutables de código escrito en Python (además de que al poner solo el código que puede ser interpretado, puede ejecutarse también en Linux). Pero bueno, aquí está el .exe junto con los archivos necesarios:
http://es.geocities.com/davidnr2002/dist.zip

P.S.: Copiar y pegar el enlace en el navegador.
deivid, no se puede descargar, verifica las letras
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #59 (permalink)  
Antiguo 07/10/2008, 13:27
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años, 1 mes
Puntos: 7
Respuesta: Segunda competencia para programadores

a mi tampoco me funciona.

Cita:
Iniciado por David el Grande Ver Mensaje
Lo cierto es que no me gusta crear ejecutables de código escrito en Python (además de que al poner solo el código que puede ser interpretado, puede ejecutarse también en Linux). Pero bueno, aquí está el .exe junto con los archivos necesarios:
http://es.geocities.com/davidnr2002/dist.zip
Pero pues tambien puedes poner el codigo junto con el ejecutable. No todos tenemos instalados compiladores de python.

saludos,
  #60 (permalink)  
Antiguo 07/10/2008, 13:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Pregunta Respuesta: Segunda competencia para programadores

Por un error extraño solo funciona si copias y pegas el enlace en el navegador, no funciona siguiendo el enlace directamente. ¿Has intentado de esa forma?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:49.