Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: MA]Mestre en 09 de Marzo de 2005, 04:06:21 PM

Título: Concurso De Programacion
Publicado por: MA]Mestre en 09 de Marzo de 2005, 04:06:21 PM
 
Con motivo de la celebración de la "fira de l'ensenyament", la empresa donde curro ha decidido organizar un concurso de programacion en C ( para animar los foros ), en una revista digial que han montado  <_< . Ya que no me dejan participar.... ( grgrgr ) :(  a ver si alguno de vosotros lo quiere intentar. Podeis encontrar las bases del concurso en www.mqo.es

Un saludete.
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 09 de Marzo de 2005, 04:48:26 PM
 borra.me
Título: Concurso De Programacion
Publicado por: synchrnzr en 10 de Marzo de 2005, 08:51:22 AM
 Por lo que veo en la descripción del concurso, parece que es bastante para principiantes, pero tal vez le puede interesar a alguien.

Os pongo un resumen de lo que piden para que os hagais la idea:

CitarEl concurso consiste en realizar un programa en C, que ocupe el mínimo espacio de bytes el archivo *.c. Es decir, el que menos caracteres utilice para su resolución. En caso de empate, el ganador se resolverá favorablemente para quien envie el programa en una fecha más temprana.

El programa a desarrollar es El cuadrado mágico de N dimensiones, siendo N un número impar entre el 3 y el 9. Un cuadrado mágico de dimensión N es una matriz cuadrada de NxN elementos, conteniendo los números naturales desde 1 a N * N, tal que coincide la suma de cualquiera de las filas o columnas.

sync
Título: Concurso De Programacion
Publicado por: Warchief en 10 de Marzo de 2005, 11:37:37 AM
 A mí lo que me asombra es que dejen hasta el 30 de Marzo, porque ayer por la noche yo di con una versión bastante reducida en un par de horas.

Habré de pensar más  (nooo)  
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 11:44:23 AM
 ¿menos de 200 bytes?
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 12:51:11 PM
 ¿Lo has hecho en 200 bytes?  :blink:  
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 12:55:12 PM
 Más o menos... :rolleyes:
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 01:18:23 PM
 Si ronda los 200 bytes y tiene todo lo que piden (pedir dato, calculo del cubo y printar los resultados) QUIERO VERLO XD porque el mío no consigo hacerlo bajar de 500 y eso que he quitado hasta los free()'s XDDD
Título: Concurso De Programacion
Publicado por: Minos en 10 de Marzo de 2005, 01:27:12 PM
 Eso, eso. Enseñalo que le busco cualquier tonteria en la que no hayas caido y lo mando!!!  :P  
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 01:42:18 PM
 es que no me lo creo XD
Título: Concurso De Programacion
Publicado por: Anathoni en 10 de Marzo de 2005, 01:57:16 PM
 ese fue uno de los ejercicios prácticos que me pedían en metodología de la programación 1 el primer año de carrera. Si no recuerdo mal era idéntico a eso aunque no te pedían que fuese del menor tamaño posible  :P  
Título: Concurso De Programacion
Publicado por: manko en 10 de Marzo de 2005, 02:03:01 PM
 tengo uno de menos de 400 bytes
...uff 200 me parece muy duro!!  
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 02:09:32 PM
 360! XD


EDIT: 349. Diario de bitácora(coder): La montaña ya es impracticable, si quiero llegar a la cima (200) tendré que buscar otro camino (algoritmo).
Título: Concurso De Programacion
Publicado por: _Grey en 10 de Marzo de 2005, 02:34:18 PM
 
CitarEl concurso consiste en realizar un programa en C, que ocupe el mínimo espacio de bytes el archivo *.c. Es decir, el que menos caracteres utilice para su resolución.

Esto me a recordado a los concunsor de codigo ofuscado de los que leia tiempo atras....
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 02:43:10 PM
 No es ofuscado pero... el código resultante no es que sea muy legible, la verdad :P

Bueno, sigo reduciendo, a ver hasta donde puedo llegar...
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 02:51:50 PM
 sés di cuanto llevas ahora mismo XDD
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 02:55:25 PM
 (ses) Más de 1 y menos de 200
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 03:25:46 PM
 Mentiraaa!!  (grrr)  
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 03:32:51 PM
 X'D
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 05:06:18 PM
 Alguien del foro dice que lo ha hecho en 188 bytes.
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 05:16:15 PM
 que os jodan a todos
Título: Concurso De Programacion
Publicado por: Sacrifai en 10 de Marzo de 2005, 06:51:17 PM
  :P Pues a mi solo con incluir las libs basicas ya me supera eso con creces.
Título: Concurso De Programacion
Publicado por: jazcks en 10 de Marzo de 2005, 07:23:01 PM
 para que ocupe menos dicen que hay quitar espacios y saltos de linea...
entonces tb se podran usar las trukillos de la programacion ofuscada esa chunga no?  :P  
Título: Concurso De Programacion
Publicado por: Sacrifai en 10 de Marzo de 2005, 07:40:50 PM
Cita de: "jazcks"para que ocupe menos dicen que hay quitar espacios y saltos de linea...
entonces tb se podran usar las trukillos de la programacion ofuscada esa chunga no?  :P
¿Pero, que tiene que ocupar eso, el source o el exe? Porque en teoría el compilador depués de comprobarlos, elimina los espacios ( que yo sepa ).
Título: Concurso De Programacion
Publicado por: fiero en 10 de Marzo de 2005, 07:48:13 PM
 el source
Título: Concurso De Programacion
Publicado por: _Grey en 10 de Marzo de 2005, 08:30:23 PM
 exactamente, se refieren al fichero con el codigo fuento, no al .exe, solo al .c.

Saludos.
Título: Concurso De Programacion
Publicado por: Sacrifai en 10 de Marzo de 2005, 09:45:22 PM
 Ha entoces el truco está claro  :D  , una vez escrito todo super optimizado a quitar tabulaciones, espacios y tal  :rolleyes: .
Título: Concurso De Programacion
Publicado por: Viento Salvaje en 10 de Marzo de 2005, 09:55:24 PM
 pensad que las macros son muy utiles para todo eso ^^
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 09:56:26 PM
 Uno dice que va por 85... pero no creo al que dice 22 :P
Título: Concurso De Programacion
Publicado por: manko en 10 de Marzo de 2005, 09:59:28 PM
 no creo al de 85 tampoco!
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 10:16:00 PM
 Por lógica:

Pedir el tamaño con un scanf:
scanf("%d",&N);
15 bytes

Rellenar el cuadrado:
for(;;)a=b;
11 bytes

Mostrar el cuadrado:
for(;;)printf("%d",N);
22 bytes

Total: 48 bytes

Y aun falta:
- Declarar variables.
- Comprobar y el tamaño introducido es válido.
- Y... evidentemente, que esos bucles hagan algo.

Yo sí creo que pueda hacerse en 85 bytes... pero yo no creo que llege.
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 10 de Marzo de 2005, 10:38:37 PM
 Yo no me creo al de 85 tampoco.
Mi source en una linea, sin espacios ni tabs ni nada, y sin poder reducirlo más, son unos 350. Ya ni me imagino como has llegado a 200 xd
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 10:40:47 PM
 Estoy en menos de 200 :P
Título: Concurso De Programacion
Publicado por: manko en 10 de Marzo de 2005, 10:50:06 PM
 por curiosidad, y si quereis...

¿ que algoritmo de construción del cuadrado mágico usais ?

Yo uso uno muy tipico por lo visto llamado  "the Siamese method" Kraitchik (1942) . Claro he cogido el codigo de ese método y lo he exprimido al máximo.

vosotros q estais usando, este mismo, otro u os habeis inventado ??  
Título: Concurso De Programacion
Publicado por: manko en 10 de Marzo de 2005, 10:51:51 PM
 por cierto ses, ya me acerco a tus numeros, al principio parecia imposible!
Título: Concurso De Programacion
Publicado por: manko en 10 de Marzo de 2005, 10:56:29 PM
 y otra cosa que se olvida, que las diagonales tambien tengan que sumar la constante mágica es importante que lo resuelva el admin pronto, porque eso me hace tener que poner mas bytes.
Título: Concurso De Programacion
Publicado por: Warchief en 10 de Marzo de 2005, 11:10:06 PM
 Pues a mí me falta por revisar la impresión, que sólo me centré en el código de generación; pero sin espacios/tabulaciones estoy en 229. sés, voy por ti!!!

Citar
¿ que algoritmo de construción del cuadrado mágico usais ?
La Loubère modificado por mí.  :ph34r:


Jasjas, me acabo de dar cuenta de que puedo reducir la friolera de 3 bytes más!  (uoh) 226 pues.
Título: Concurso De Programacion
Publicado por: sés en 10 de Marzo de 2005, 11:28:00 PM
 Yo uso el siamés ese, pero creo que me he quedado atascado... miraré otros diferentes, a ver si puedo reducir alguno más.

-= EDIT =-
Por cierto, una de las cosas que más me jode es la comprobación válida de N -.-
Título: Concurso De Programacion
Publicado por: Warchief en 10 de Marzo de 2005, 11:46:52 PM
 
Citar
[...]Existen diversos métodos matemáticos para el establecimiento de los cuadrados mágicos, el mejor sigue siendo el método siamés, fue traído a Europa por un embajador de Luis XIV, enviado en 1.687 cerca del rey de Siam, y que se llamaba "De La Loubere", pero no se aplica más que a los cuadrados de orden impar[...]

XD
Título: Concurso De Programacion
Publicado por: Warchief en 11 de Marzo de 2005, 12:41:01 AM
 85 imposible con este algoritmo y esas bases, a lo mejor hay un algoritmo que a=b*formulaextraña y nos jode, jasjas.

-- EDITADO BORRANDO LO QUE PONIA PORQUE:
<< no recordaba q si los tamaños son iguales, gana el que envíe antes, así que callo cual muerto, sí. >>
--

Baste decir que ya llegué a <200 ;)
Título: Concurso De Programacion
Publicado por: _Grey en 11 de Marzo de 2005, 01:56:58 AM
 Algunos dicen que tienen menos de 150, juraria a que es una estratagema para que la gente tarde algo mas en enviarlo, al menos asi tiene el tiempo a favor... pero el de 22 si que no!! :lol:  :lol:  
Título: Concurso De Programacion
Publicado por: _Grey en 11 de Marzo de 2005, 02:51:48 AM
 Por cierto, en este programa e descubierto que scanf() y printf() compilan perfectamente sin incluir la linea de:
#include "stdio.h"

Es esto correcto, dentro de ANSI C???

Saludos.
Título: Concurso De Programacion
Publicado por: Warchief en 11 de Marzo de 2005, 03:27:10 AM
Cita de: "_Grey"Por cierto, en este programa e descubierto que scanf() y printf() compilan perfectamente sin incluir la linea de:
#include "stdio.h"

Es esto correcto, dentro de ANSI C???

Saludos.
Esa es una de las cosas que debería dar "warnings". Aceptado. No?
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 01:04:53 PM
 Probe 15 minutos pero no paso de 250 ... suciamente veo que puedo llegar a 200 como mucho pero no creo que baje de eso.
Seguramente tendre que cambiar el algoritmo.
Que mal que el tipo no sepa lo de las diagonales ... o sea ... se mando a hacer un concurso sin saber lo que pedia ?  
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 01:20:33 PM
 189 !
Título: Concurso De Programacion
Publicado por: _Grey en 11 de Marzo de 2005, 01:38:21 PM
 Lo de las diagonales y el formato de las columnas no lo aclara... estoy que me muero!! si las diagonales no importan puedo reducirlo mas y si el formato de las columnas tampoco importa o es valido como de comente, igual. A ver si MA]Mestre le da un toquecito.... :P :P

Saludos, y suerte.
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 03:03:11 PM
 Ya me re pudrio entregué lo que tenia, 164 bytes.

Si alguien hizo menos que me avise.
Título: Concurso De Programacion
Publicado por: Sacrifai en 11 de Marzo de 2005, 03:23:21 PM
 A mi se me ocurre, que supongo que será una estupidez y alguién lo habra hecho ya, usar algun define para datos muy usados. Quizas ganes algo acortando mucho su nombre.
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 03:27:46 PM
 160 bytes, pero ya entregué, que flor de pelotudo!
158 ... ahora, que garrón  (grrr)  (grrr)  (grrr)  .
156 ...  (nooo)  
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 03:44:16 PM
 
Cita de la poesia gauchesca:
"El buey lerdo toma el agua turbia, el apurado ... se entierra de guampas."
Título: Concurso De Programacion
Publicado por: Haddd en 11 de Marzo de 2005, 04:06:10 PM
 Qué concurso más raro. Lo del nº de bytes me parece  :blink:  
Título: Concurso De Programacion
Publicado por: sés en 11 de Marzo de 2005, 04:36:05 PM
 Pogacha: yo tengo menos que tú ^_^

Sacrifai: Lo de los defines... como que no ayuda mucho en esto.
Título: Concurso De Programacion
Publicado por: Pogacha en 11 de Marzo de 2005, 06:25:34 PM
 Ses: En serio, menos 156 no consegui ni a palo ...
Lo que me quedaba era cambiar nuevamente el algoritmo pero ya lo mande, así que ya fue, no se si voy a seguir ...
Despues me lo mostras como hiciste,
encontraste c(i,j) ?
Saludos.
Título: Concurso De Programacion
Publicado por: _Grey en 11 de Marzo de 2005, 07:22:30 PM
 156??

ya sabeis que cuentan las diagonales y lo de la alineacion es a la izquierda??

Saludos.
Título: Concurso De Programacion
Publicado por: sés en 11 de Marzo de 2005, 11:56:57 PM
 Claro... y la comprobación de que N es válido y salga en caso contrario.
Bueno, cuando acabe el concurso lo pondré por aquí.

Tengo ganas de ver si es cierto lo de 85. Podría ser, pero lo veo complicado... MUY complicado. Escribiendo lo MÍNIMO, sin algoritmo ni nada, creo que salían unos 51 bytes, en fin.
Título: Concurso De Programacion
Publicado por: _Grey en 12 de Marzo de 2005, 01:47:32 PM
 uff! esto me a dañado mentalmente, necesito algo de reposo neuronal.... y seguro que gana otro..... sic!

enviado.... que sea lo que tenga que ser....

Y suerte!!!
Título: Concurso De Programacion
Publicado por: sés en 12 de Marzo de 2005, 02:13:01 PM
 Yo también lo mandaré dentro de poco... creo que esto que me chorrea por las orejas es sesillo derretido.
Dudo que pueda rascar muchos más bytes -.-

-= EDIT =-
Por cierto... ¿alguien ha llegado a 100? (ses)
Título: Concurso De Programacion
Publicado por: zupervaca en 12 de Marzo de 2005, 02:41:58 PM
 no habia visto este hilo de post jeje, me parece un poco cutre este tipo de concurso ya que tener que quitar espacios, tabulaciones etc es ridiculo, pero bueno he mirado un rato lo del cubo magico y a ojo se podria en casi nada, los trucos serian usar un puntero y dos variables que hacen cositas entre ellas y utilizan el modulo de la division.

pero en serio digo que este tipo de concursos son raros  :P

saludos
Título: Concurso De Programacion
Publicado por: Warchief en 12 de Marzo de 2005, 02:43:18 PM
 Yo estoy estancado en los cien largos. Me di cuenta de que un montón de reducción que hice me hacía que las columnas no sumaran lo mismo (a pesar de que las 2 diagonales sí XD), así que tuve que desandar el camino y ahora estoy en un pozo.  (nooo)  
Título: Concurso De Programacion
Publicado por: sés en 12 de Marzo de 2005, 02:51:42 PM
 zupervaca: Si te parece tan tonto y sencillo... pues hazlo y llévate el MP3 ^_^
Título: Concurso De Programacion
Publicado por: seryu en 12 de Marzo de 2005, 02:54:41 PM
 a mi me parece que habria que descontar los espacios, comentarios, saltos de pagina, y todo lo que no entra a ser el codigo en si.

De esta forma las entregas seran todas codigo legible y el rsto de participantes y publico pueden aprender algo. Pero en cualquier caso hacerlo ofuscado tambien puede ser divertido.

A mi personalmente no me gusta mucho este tipo de concurso, pero de todo tiene que haber!
Título: Concurso De Programacion
Publicado por: zupervaca en 12 de Marzo de 2005, 03:15:41 PM
 
Cita de: "sés"zupervaca: Si te parece tan tonto y sencillo... pues hazlo y llévate el MP3 ^_^
no soy de los quitan espacios, tabulaciones, retornos de carro, etc para ganar un mp3, ademas de que no suelo escuchar musica en casa y ya tengo aparatos para ello

creo que no tiene sentido quitar caracteres de este tipo ya que en mi opinion no por ser mas pequeño es mejor, ademas de que se vuelve ilegible el codigo

un ejemplo era aquella formula que tenia un chico del foro y dije se podia optimizar con una suma, yo lo optimizaria pero pondria esa formula comentada por si alguien no es capaz de entender porque hago una suma en vez de utilizar esa formula, y si ese comentario no se pude poner por que el fuente no puede ser superior a x bytes no me parece correcto por eso digo que este tipo de concursos no me gustan, soy una persona que no puedo evitar poner comentarios una ordenacion del codigo .... :lol:

pero bueno el problema es mio que soy un maniatico, no puedo ver esto por ejemplo: a=b; en mi caso tendria que estar puesto asi a = b; ahora segun lo escribo me estoy poniendo malo  :lol:  
Título: Concurso De Programacion
Publicado por: BeRSeRKeR en 12 de Marzo de 2005, 03:50:59 PM
Cita de: "zupervaca"no puedo ver esto por ejemplo: a=b; en mi caso tendria que estar puesto asi a = b; ahora segun lo escribo me estoy poniendo malo  :lol:
Pues estás como yo, yo tampoco lo puedo soportar. :D
Título: Concurso De Programacion
Publicado por: Pogacha en 12 de Marzo de 2005, 04:37:37 PM
 En realidad mi codigo es sin respetar las diagonales, pues en un principio el organizador pidió solo por columnas y filas, en todo caso ya no quiero seguír, aun que sigo pensando en como habrais hecho para hacer menos de 150 bytes.

Zupervaca: es un concurso!, no puedes entender eso?, que sentido puede tener hacer un algoritmo que ya todos conocen y hay codigo por todos lados, la idea era otra cosa, en realidad te ayuda a explorar patrones distintos de programación que muchas veces son olvidados, el ingenio y la perceverancia son los premiados, y el cambio de ambiente evalua la adaptación.
Título: Concurso De Programacion
Publicado por: _Grey en 12 de Marzo de 2005, 04:41:36 PM
 Pues es toda una experiencia, exprimes el C, hasta quedar exausto...y es creativo que porras!
Título: Concurso De Programacion
Publicado por: zupervaca en 12 de Marzo de 2005, 04:59:41 PM
 si quereis creatividad hacer una rutina grafica que sin comprobar si el color 0 es mascara la haga ;)
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 12 de Marzo de 2005, 06:07:50 PM
 que quereis que os diga, a mí me parece más divertido que el de juegos en 24h XDDD

P.D: y lo del MP3 es lo de menos, que yo ya tengo uno mejor que ese :P
Título: Concurso De Programacion
Publicado por: sés en 12 de Marzo de 2005, 06:08:51 PM
 B) El próximo podría ser hacer un jeugo en 24h... y en 256 bytes XD


(ses) *se toma la pastilla*
Título: Concurso De Programacion
Publicado por: Juan Mellado en 12 de Marzo de 2005, 07:02:03 PM
 Pues a mi estas cosas me gustan, el premio es lo de menos.

135 !!!

Y dos semanas por delante...

Saludos

P.D. ¿85?
Título: Concurso De Programacion
Publicado por: _Grey en 12 de Marzo de 2005, 07:47:03 PM
 Juan Mellado??

Tu no eres uno que hace algun tiempo se metio en un post de por aqui donde se trataba la forma mas optimizada de saber si un numero era potencia de 2 a base de ensamblador?!??!?

Saludos.
Título: Concurso De Programacion
Publicado por: _Grey en 14 de Marzo de 2005, 01:08:51 PM
 Atencion, han cambiado reglas.

Por lo visto ante la duda de los includes, han optado por obligar su insercion. Dice el Admin que los que ya enviaron codigo se les enviara un mail para que lo envien otra vez....  lo que no dice es si se pueden incluir mas variaciones al codigo :P  :P .

Saludos.
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 01:17:10 PM
 Eh... solo un código por persona, tramposillo :ph34r:
Título: Concurso De Programacion
Publicado por: Haddd en 14 de Marzo de 2005, 01:23:04 PM
 ¿el programa debe generar un cuadro mágico dado el tamaó de la matriz o sólo comprobar que el que te dan lo es?
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 01:27:23 PM
 Debe generarlo
Título: Concurso De Programacion
Publicado por: _Grey en 14 de Marzo de 2005, 01:39:57 PM
 
CitarEh... solo un código por persona, tramposillo :ph34r:

Hombre, entonces lo podrian poner ellos, veamos que dice el Admin... :rolleyes:  :rolleyes:

De todas formas mi codigo era MUY compacto....

Saludos.
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 02:40:03 PM
Cita de: "_Grey"De todas formas mi codigo era MUY compacto....
¿Menos de 150?
Título: Concurso De Programacion
Publicado por: _Grey en 14 de Marzo de 2005, 02:54:08 PM
 Si, menos de 150.

Antes del #include.

Pero por lo que leo por los foros diria que tengo mas que tu... no se, la guerra psicologica es muy fuerte (asco), y ahora que el Admin dice que hay que reeinviarlos cuando recibamos su correo estoy que pierdo los nervios...

Saludos.
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 02:56:43 PM
 Guerra psicológica ò_ó

Bueno, yo no participo en ella. Aun no he dicho cuánto ocupa el mío, aunque creo que lo mandaré muuy pronto porque ya no sé de dónde rascar.
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 04:54:23 PM
 Enviado... ya no puedo más :wacko:  
Título: Concurso De Programacion
Publicado por: Pogacha en 14 de Marzo de 2005, 07:18:16 PM
 LA PSICOLOGICA
Título: Concurso De Programacion
Publicado por: Sacrifai en 14 de Marzo de 2005, 07:46:36 PM
Cita de: "Pogacha"LA PSICOLOGICA
¿¿??
Título: Concurso De Programacion
Publicado por: _Grey en 14 de Marzo de 2005, 08:33:07 PM
 joder... lo acabo de retocar y ahora lo tengo en 135, sin contar el include claro.

Saludos.
Título: Concurso De Programacion
Publicado por: Haddd en 14 de Marzo de 2005, 09:43:43 PM
 ¿haceis un memset y comprobais que el tamaño del cuadrado sea correcto ?
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 09:46:32 PM
 Eres un derrochador de bytes :P
Título: Concurso De Programacion
Publicado por: Pogacha en 14 de Marzo de 2005, 10:14:30 PM
 
CitarSacrifai Escrito el 14/03/05, 15:46
--------------------------------------------------------------------------------
QUOTE (Pogacha @ 14/03/05, 19:18 )
LA PSICOLOGICA 

¿¿?? 

=>

Citar_Grey Escrito el 14/03/05, 10:54
--------------------------------------------------------------------------------
.......
Pero por lo que leo por los foros diria que tengo mas que tu... no se, la guerra psicologica es muy fuerte , y ahora que el Admin dice que hay que reeinviarlos cuando recibamos su correo estoy que pierdo los nervios...

Citarsés Escrito el 14/03/05, 10:56
--------------------------------------------------------------------------------
Guerra psicológica ò_ó

Bueno, yo no participo en ella. Aun no he dicho cuánto ocupa el mío, aunque creo que lo mandaré muuy pronto porque ya no sé de dónde rascar.

Citarsés Escrito el 14/03/05, 12:54
--------------------------------------------------------------------------------
Enviado... ya no puedo más   

(.,.)
TTTTTTT
Título: Concurso De Programacion
Publicado por: sés en 14 de Marzo de 2005, 10:33:50 PM
 ¿Y qué tienen que ver mis mensajes con esa "guerra" psicología? (ses)
Nunca he dicho cuánto llevo y he decidido enviarlo porque ya no creo que pueda rascar más bytes y estoy cansado.
Título: Concurso De Programacion
Publicado por: _Grey en 14 de Marzo de 2005, 11:06:55 PM
 Puede que con tus mensajes no, pero sabes como esta esto por que a ti tambien parece tocarte  :rolleyes:

Citar¿haceis un memset y comprobais que el tamaño del cuadrado sea correcto ?

memset!? sale por pantalla y punto, ni siquiera tengo array, es mas, la unica "funcion" que se llama es el printf. :P  :P  
Título: Concurso De Programacion
Publicado por: Pogacha en 14 de Marzo de 2005, 11:09:21 PM
 Ses:
Citar¿Y qué tienen que ver mis mensajes con esa "guerra" psicología?
Nunca he dicho cuánto llevo y he decidido enviarlo porque ya no creo que pueda rascar más bytes y estoy cansado.
... pues "supuse" ( a manera de broma ) te vencio la psicologia, la guerra es contra uno ... pienso: entregar antes si no estas seguro que es el tope, pues si demoras un dia pero bajas un byte ..., el juego ya no te daba la satisfacción como para continuarlo ( reaccion psicologica ).

No es personal  contra tí, ni contra _grey ni contra sacrifai, ni contra nadie.

Nota - Offtopic:
Siempre trato de hablar con la mayor propiedad y respeto que puedo en este foro, pero ya he encontrado algunos incidentes con respecto a las diferencias culturales, pido disculpas a todos si alguna vez los he ofendido con algún comentario, quiero aclarar que  nunca intento atacar ni ofender a nadie, sabiendo que comparativamente mi cultura os parecerá irrespetuosa y egocentrica hago mi mejor esfuerzo para no caer en los recursos del argentinismo, les aseguro que mas de una vez me contengo si no estoy seguro de como se entenderá, quiza esta vez, sin entender bien por que, halla ofendido a alguien.
Gracias por comprender, no me enojo si me corrijen cuando así lo crean y verán que mi respuesta será del todo cooperativa pues tampoco me niego a corregir mis errores (intento liberarme el argentinismo a toda costa  :P ).

Saludos.
Título: Concurso De Programacion
Publicado por: Sacrifai en 14 de Marzo de 2005, 11:49:56 PM
 Jejej, Pogancha, yo preguntaba porque no sabía a que venía. Es que cuando hay muchos post, me atribulo y no leo. Culpa mia  (uoh)  .
Título: Concurso De Programacion
Publicado por: MA]Mestre en 15 de Marzo de 2005, 12:07:37 AM
 Juer... que marujas estais echas   :lol:  
Título: Concurso De Programacion
Publicado por: sés en 15 de Marzo de 2005, 08:54:08 AM
Cita de: "_Grey"memset!? sale por pantalla y punto, ni siquiera tengo array, es mas, la unica "funcion" que se llama es el printf. :P  :P
Y scanf(), que esa es sí que es obligatoria ^_^

pogacha: Ya me imaginaba porqué lo decías, pero lo mío ni tiene que ver con ninguna guerra. Simplemente llevaba bastante tiempo rascando y he llegado a algo que no creo que pueda reducir... a no ser que le dedicara bastante más tiempo.
Ese MP3 no vale tanto esfuerzo :P
Título: Concurso De Programacion
Publicado por: sés en 15 de Marzo de 2005, 04:20:18 PM
 ¿Alguien ha recibido la confirmación de que su código ha llegado?
Título: Concurso De Programacion
Publicado por: shephiroth en 15 de Marzo de 2005, 05:26:39 PM
 Por dios, como habeis llegado a esos numeros...yo no puedo exprimirlo mas.....

Cabecera (include y main) 29 bytes
Declaracion variables 12 bytes
Pedir N 15 bytes
N correcto 27 bytes
Generar matriz posicion por posicion 78 bytes
Visualizar con formato 46 bytes
Cerrar bucles y demas 11 bytes

Total = 29+12+15+27+78+46+11=218 bytes >_<

Alguien me dice que hago mal??? >_<
Título: Concurso De Programacion
Publicado por: sés en 15 de Marzo de 2005, 05:44:54 PM
 Dos ejemplos:

include + main -> 25 bytes
Pedir N -> 14 bytes

El resto se puede reducir bastante más.
Título: Concurso De Programacion
Publicado por: shephiroth en 15 de Marzo de 2005, 06:12:35 PM
 Wenoo, vamos mejorando, visualizar con formato 17 bytes :)

Gracias ses, ya voy reduciendolos poco a poco xDD
Título: Concurso De Programacion
Publicado por: _Grey en 15 de Marzo de 2005, 06:57:28 PM
 Yo no he recibido mail ni de comfirmacion ni de reenvio por que la primera vez no puse el include, de todas formas no me importa mucho, poco despues lo reduci mas y claro, ya no puedo enviarlo y seguro que alguien dara con ello ....

CitarAlguien me dice que hago mal??? >_<

No haces nada mal, es mas lo haces demasiado bien, intenta meter codigo donde no suele estar, busca un algoritmo mas eficiente .... no crees la matriz B)  etc, etc...

CitarWenoo, vamos mejorando, visualizar con formato 17 bytes

Alineado a la izquierda, no?

Saludos.
Título: Concurso De Programacion
Publicado por: shephiroth en 15 de Marzo de 2005, 09:10:48 PM
 Si, alineado a la izquierda, con 3 posiciones xDD

CitarNo haces nada mal, es mas lo haces demasiado bien, intenta meter codigo donde no suele estar, busca un algoritmo mas eficiente .... no crees la matriz...

En ningun momento creo q la matriz.....la presento en pantalla, no me creo matriz ni nada
Título: Concurso De Programacion
Publicado por: sés en 15 de Marzo de 2005, 09:31:09 PM
 
Citarprintf("%d",x);
Eso son 15 caracteres... y no está alineado ni tiene el salto de línea. ¿Dices que haces todo en 17?
Título: Concurso De Programacion
Publicado por: shephiroth en 15 de Marzo de 2005, 10:02:15 PM
 Wenas.

En parte teneis razon, me venció la emocion, son 26 bytes (me olvide contar el salto de linea q lo tengo fuera de bucle xDD), pero si, son 26 bytes, y aunque doy muchas pistas el mostrar el dato formateado son 17 bytes exactos.
Título: Concurso De Programacion
Publicado por: zupervaca en 15 de Marzo de 2005, 11:00:04 PM
 printf("%.3d",x);

a esto te refieres? no lo estais usando todos?  :huh:  
Título: Concurso De Programacion
Publicado por: shephiroth en 15 de Marzo de 2005, 11:23:51 PM
 Eso (que yo sepa) alinea a la derecha....hay q alinearlo a la izquierda.......

P.D: No pongas el codigo, que lo busquen, q mira q es cambiar 1 solo byte xDD
Título: Concurso De Programacion
Publicado por: samsaga2 en 16 de Marzo de 2005, 09:35:17 AM
 Pues yo no logro bajarlo de 306 bytes. El unico algoritmo que he encontrado requiere matrices... por lo que he visto hay un algoritmo para cuadrados impares, otro para pares y otro para pares multiplos de cuarto. Por otro lado no se como haceis imprimir el resultado en 26 bytes porque aparte del printf con el resultado hay que imprimir los saltos de linia del recuadro.

En mi caso tengo dos includes stdio.h (para poder usar fscanf) y string.h (para usar memset) eso son ya 39 bytes. Hacer un fscanf del stdin para leer el lado del cuadrado son 18 bytes, llevamos 57. Despues imprimir el recuadro en mi caso son 58 bytes, total 115 bytes. Añadimos el main y el return (el return obligatorio porque asi lo dice el C99) son 20bytes, eso queda en un mnimo obligatorio para todo quisqui de 135bytes. Dicen que lo han hecho el programa en 150bytes lo que quiere decir que en 15bytes han montado el algoritmo... soy un poco exceptico :-D. Como mucho puedo creerme que imprimen el recuadro en 26bytes lo que quedan 42bytes para el algoritmo.

Ya que no querreis pegar el programa al menos pegar el resultado...
Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 11:07:48 AM
 A mí no me salen 135 bytes de mínimo ni de coña. Me sale menos.

Si quitas el return, como mucho te dará un warning, y ya dijeron que no importaban los warnings si el programa funcionaba.

Y no pego el resultado por si a alguien le da alguna pista ^_^. Cuando acabe el concurso lo pegaré por aquí... aunque no gane :(
Título: Concurso De Programacion
Publicado por: manko en 16 de Marzo de 2005, 11:15:58 AM
 #include supone 20 bytes siempre
main(){} supone 8 bytes
scanf("%i",&n); supone 15 bytes
printf("%i",n); supone 15 bytes

total = 58 bytes para pedir un num y sacarlo por pantalla

por lo que he leido un tio lleva 129 bytes!!

129 - 58 = 71 bytes para:

declarar variables                                    
comprobar que 2 < n > 10 y es impar      
ejecutar algoritmo cuadrado mágico
imprimir correctamente                            

yo no soy capaz de sacarlo en tan poco.
Título: Concurso De Programacion
Publicado por: samsaga2 en 16 de Marzo de 2005, 11:35:49 AM
Cita de: "manko"#include supone 20 bytes siempre
main(){} supone 8 bytes
scanf("%i",&n); supone 15 bytes
printf("%i",n); supone 15 bytes

total = 58 bytes para pedir un num y sacarlo por pantalla

por lo que he leido un tio lleva 129 bytes!!

129 - 58 = 71 bytes para:

declarar variables                                    
comprobar que 2 < n > 10 y es impar      
ejecutar algoritmo cuadrado mágico
imprimir correctamente                            

yo no soy capaz de sacarlo en tan poco.
Uno siempre aprende cosas nuevas  :)  no sabia que scanf por defecto ya coge la entrada de stdin yo estaba haciendo:

fscanf(stdin, "%d", &n);

Me ha dejado quitar todos los includes y ahora se me queda el programa en 250bytes. Solo puedo reducirlo mas si existe algun algoritmo para crear el cuadrado que no requiera una matriz (cosa que no he encontrado).
Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 11:40:09 AM
Cita de: "samsaga2"Me ha dejado quitar todos los includes y ahora se me queda el programa en 250bytes.
Ya... ^_^

Pero hace tiempo que dijeron que el include de stdio es OBLIGATORIO. Parece  ser que a algunos les da error con algún compilador y así estamos todos igualados.
Título: Concurso De Programacion
Publicado por: samsaga2 en 16 de Marzo de 2005, 11:49:09 AM
Cita de: "sés"
Cita de: "samsaga2"Me ha dejado quitar todos los includes y ahora se me queda el programa en 250bytes.
Ya... ^_^

Pero hace tiempo que dijeron que el include de stdio es OBLIGATORIO. Parece  ser que a algunos les da error con algún compilador y así estamos todos igualados.
Ops, pues despues de haber reescrito la parte de imprimir la matriz y añadido el stdio.h se me queda esto en 254bytes.
Título: Concurso De Programacion
Publicado por: gdl en 16 de Marzo de 2005, 12:44:54 PM
 
CitarY no pego el resultado por si a alguien le da alguna pista . Cuando acabe el concurso lo pegaré por aquí... aunque no gane

La verdad es que me estoy divirtiendo mucho con este concurso. Además, estoy recordando las congruencias y aquellas cosas tan curiosas de matemáticas discretas. Cuando acabe el concurso, vamos a ver si entre todos podemos coger el programa del ganador y exprimirlo un poco más.

Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 12:49:43 PM
Cita de: "gdl"Cuando acabe el concurso, vamos a ver si entre todos podemos coger el programa del ganador y exprimirlo un poco más.
... y hacer que desaparezca :P
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 16 de Marzo de 2005, 01:05:55 PM
Cita de: "sés"
Cita de: "gdl"Cuando acabe el concurso, vamos a ver si entre todos podemos coger el programa del ganador y exprimirlo un poco más.
... y hacer que desaparezca :P
... pero siga imprimiendo la matriz XD
Título: Concurso De Programacion
Publicado por: shephiroth en 16 de Marzo de 2005, 02:20:15 PM
 
Cita de: "CoLSoN2"
Cita de: "sés"
Cita de: "gdl"Cuando acabe el concurso, vamos a ver si entre todos podemos coger el programa del ganador y exprimirlo un poco más.
... y hacer que desaparezca :P
... pero siga imprimiendo la matriz XD
.....y sacarle algun fallo para que no lo acepten???  (twist)

Respecto a los 26 bytes que decis que luego falta el saltar de linea.....son 17 para imprimir y 9 para saltar de linea xDD

Yo he encontrado una formula que me deja imprimir en tiempo real, sin crear matriz, pero parece que uso demasiados bytes.....ya no se que hacer, pero sigo intentando cosas  (nooo)  
Título: Concurso De Programacion
Publicado por: samsaga2 en 16 de Marzo de 2005, 02:41:46 PM
 Yo ya lo he dado por imposible (no creo que nadie supere esos 126 bytes que comentan en el foro de la web original) y he enviado lo que tengo... 194bytes. Eso si, me tendrian que dar el doble de puntos por codigo ofuscado porque no se va a enterar ni dios de lo que dice XD.

Y truco para los que quieran ahorrarse un byte... en windows los returns son ascii 13 + ascii 10, en linux ascii 10 asi que os ahorrais un byte :-P
Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 02:45:29 PM
 Lo mínimo que he leído (creíble) eran 129... el de 85 no lo cuento.
Título: Concurso De Programacion
Publicado por: samsaga2 en 16 de Marzo de 2005, 02:47:56 PM
 El de 85 si me lo creo.. hara cuadrados tipo

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

Es increible! Suma lo mismo todos los lados  (uoh)  
Título: Concurso De Programacion
Publicado por: zupervaca en 16 de Marzo de 2005, 03:04:19 PM
Cita de: "samsaga2"El de 85 si me lo creo.. hara cuadrados tipo

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

Es increible! Suma lo mismo todos los lados  (uoh)
yo no lei las bases del concurso y tampoco toy en ello, pero este cubo magico fijo que es valido ya que tambien es valido no crear la matriz
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 16 de Marzo de 2005, 03:39:42 PM
 pero debe contener todos los dígitos de 1 a N*N (N=Tamaño), sino donde está la gracia del algoritmo? XD
Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 03:49:07 PM
 Además sí lo pone en las bases.
Título: Concurso De Programacion
Publicado por: shephiroth en 16 de Marzo de 2005, 04:13:20 PM
 Cabecera (include y main) 29 bytes, ahora 25 :)
Declaracion variables 12 bytes
Pedir N 15 bytes -> Ya me explicaras como haces 14, scanf("%i",&n); son 15 O_O
N correcto 27 bytes -> 19 bytes
Generar matriz posicion por posicion 78 bytes -> 60 bytes
Visualizar con formato 46 bytes -> 15 bytes visualizar, 16 para saltos de linea
Cerrar bucles y demas 11 bytes -> 3 bytes

Total actual: 25+12+15+19+60+31+3=165 bytes

P.D: Respecto al de 85 bytes, solo me entra si no genera el cuadrado, lo tiene en bytecodes y simplemente lo muestra....
Título: Concurso De Programacion
Publicado por: _Grey en 16 de Marzo de 2005, 04:32:48 PM
 Yo lo tengo a 154, con el include, lamentablemente cuando lo envie tenia algo mas...  <_<  
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 16 de Marzo de 2005, 06:02:42 PM
 Hm por cierto, oigo que la gente imprime los datos que va generando en vez de crear una matriz y luego imprimirlo.

Entonces teneis un bucle como

[
for y = 0 to 10:
for x = 0 to 10:
  calcular e imprimir valor de la coordenada x,y
]

en vez de

[
for i = 0 to 10:
 calcular x e y
 matriz(x,y) = i
for y = 0 to 10:
for x = 0 to 10:
  imprimir valor de la coordenada x,y
]

En caso afirmativo, como cojones calculais en orden (para que se imprima bien) x,y en vez de ascendente en i? No se si me explico xD
Título: Concurso De Programacion
Publicado por: _Grey en 16 de Marzo de 2005, 07:19:17 PM
 exactamente, en un bucle. Para saber el como.... pues yo me puse a escrivir muchos de estos cuadrados magicos estudiarlos un poco y ya esta.... es un concurso, no te vamos a rebelar todos los truquis no!?!?!??! :P :P

Saludos.
Título: Concurso De Programacion
Publicado por: sés en 16 de Marzo de 2005, 09:51:07 PM
 El día 30 se verán las triquiñuelas de cada uno ;)
Título: Concurso De Programacion
Publicado por: sés en 19 de Marzo de 2005, 10:21:25 AM
 ¿Por qué no está mi mensaje (el el foro de MQO) donde decía cuándo y a que hora lo envié (14/3/2005 16:55 aprox.)?
¿Y por qué no hay confirmación aun?

QUOTE ("gdl")
Sí me ha llegado ya la confirmación.[/quote]
Uno de los datos necesarios al enviar el correo era el usuario dentro del foro...
¿Cómo es que gdl tiene la confirmación cuando se registró 2 días después de que yo lo enviara? (ver perfil de gdl)
Título: Concurso De Programacion
Publicado por: MA]Mestre en 19 de Marzo de 2005, 12:57:28 PM
 Ses por lo que me consta, han respondido a todos via mail, confirmando su participacion.

Este lunes, les pedire que revisen tu caso, creo que tb estara bien que pongan una lista publica.

Un saludo.
Título: Concurso De Programacion
Publicado por: gdl en 19 de Marzo de 2005, 02:11:04 PM
 No te pongas nervioso sés.

De todas las maneras voy a tener menos bytes que tú  ;)  
Título: Concurso De Programacion
Publicado por: sés en 19 de Marzo de 2005, 06:29:08 PM
Cita de: "gdl"De todas las maneras voy a tener menos bytes que tú  ;)
Ya me da igual, o lo enviaba o me explotaba la cabeza -.-

...¿Tienes menos que cronodragón (129 con el include)?
Título: Concurso De Programacion
Publicado por: gdl en 19 de Marzo de 2005, 10:24:23 PM
 
Cita de: "sés"...¿Tienes menos que cronodragón (129 con el include)?
En efecto.  B)  
Título: Concurso De Programacion
Publicado por: sés en 19 de Marzo de 2005, 10:26:31 PM
 ¿128?
¿127?

(ses) ¿100?
Título: Concurso De Programacion
Publicado por: gdl en 19 de Marzo de 2005, 10:48:31 PM
 
Citar¿100?

He hecho unas búsquedas de árboles de expresión con backtracking y las únicas expresiones que he encontrado eran modulares (% en C) y necesitaban unos 120bytes. Puede que existan expresiones más cortas que no usen la aritmética modular, pero lo dudo porque el problema rezuma congruencias por todas partes. :rolleyes:

Quizá algo no lineal... <_<

Luego añadimos un puñadillo de caracteres más para centrar el cuadrado y que las diagonales sumen la constante mágica, que también es requerido.

Eso sí, puede que haya algún truquillo de C que te coma algunos caracteres, pero lo dudo mucho porque llegué a los 129 bytes de cronodragón únicamente mediantes trucos de C (probablemente que él también usó). La última reducción no se basa en el C si no en las matemáticas. No son muchos bytes menos, pero puede ser la diferencia.

Con el *casi* convencimiento de que mi código es el teóricamente más corto, lo envié antes de que otro pudiera llegar al mismo convencimiento.  :ph34r:

Cuando termine el concurso te lo explico con más detalle ¿vale?
Título: Concurso De Programacion
Publicado por: sés en 19 de Marzo de 2005, 11:02:21 PM
 Bueno... yo lo envié antes que tú :P
Título: Concurso De Programacion
Publicado por: gdl en 19 de Marzo de 2005, 11:59:51 PM
 Malo (asco)  
Título: Concurso De Programacion
Publicado por: ZeruGiran en 21 de Marzo de 2005, 08:53:28 AM
 Despues de casi 2.5 horas tengo 299 caracteres :(
Creo que erré el camino porque uso malloc :angry: por tanto uso dos bucles uno para generar y otro para imprimir. Por lo que les he leido se puede hacer sin reservar memoria.

Ta gueno el concurso :D

Deberia estar con mi tesis en lugar de estar jugando :rolleyes:
Título: Concurso De Programacion
Publicado por: samsaga2 en 21 de Marzo de 2005, 09:45:35 AM
Cita de: "ZeruGiran"Despues de casi 2.5 horas tengo 299 caracteres :(
Creo que erré el camino porque uso malloc :angry: por tanto uso dos bucles uno para generar y otro para imprimir. Por lo que les he leido se puede hacer sin reservar memoria.

Ta gueno el concurso :D

Deberia estar con mi tesis en lugar de estar jugando :rolleyes:
Bueno, yo lo he hecho sin reservar memoria pero haciendo uso de trucos "guarros". Por lo que he oido matematicamente hay una forma de resolverlo sin hacer uso de matrices pero no me preguntes como porque no lo se :-P.
Título: Concurso De Programacion
Publicado por: ethernet en 21 de Marzo de 2005, 10:35:40 AM
 Bueno, la verdad no he hecho demasiado caso a este concurso porque por mi experiencia sé que pierdo más tiempo del que debo.. XD sin embargo tengo algunos trucos que quizas os ayuden, aunque seguro que la mayoría les conoceis. Los cito de memoria:

- por descontado: uso del condicion?cierto:falso
- definicion de variables: en ansic las variables globales por defecto son enteras y se inician a 0, por lo tanto:


void main()
{
int a = 0;
}
es lo mismo que
a;
void main()
{
}


algún caracter te ahorras.

- para el caso del main: void main(char argc, char* argv[]) es casi lo mismo que: void main(c,v)int c,**v{}. SE hace uso del guarripeich sistema de definir las variables. No sé si en este caso concreto se debe usar.

- nada de usar mallocs y optimizaciones en el algoritmo (esto es obvio pero por si acaso), no se trata de hacer que corra rápido.
- aprovechar los for: en un for puedes hacer for(a=0,b=1,e=3,i<4&&y<7;g++,g*=9); esto puede hacer ahorrarte algunos caracteres
- típico truco de #define p(x) printf(x) si es rentable en cuanto a caracteres.

No recuerdo ningún truquillo más, auque sé que los había. Si encuentro la web donde se colgaron aquellos códigos la paso por si os resultan fuente de inspiración.

Suerte,saludos
Título: Concurso De Programacion
Publicado por: zupervaca en 21 de Marzo de 2005, 11:51:37 AM
 bueno ya que estamos de trucos recordar el usar este tipo de formulas:

a == 0 ? true : false;

columna == N -1 ? '\r' : ' '; <-- un ejemplo de retorno de carro que agrega un espacio

etc  ;)  
Título: Concurso De Programacion
Publicado por: gdl en 21 de Marzo de 2005, 11:56:57 AM
 Creo que no es nada educado dar las pistas tan explícitas que estáis dando. Dando estas pistas lo único que se consigue es romper el concurso. :(

Es parte del concurso el buscar esos trucos.

Por favor. Un respeto a los que sí que queremos concursar.
Título: Concurso De Programacion
Publicado por: sés en 21 de Marzo de 2005, 12:15:36 PM
 Totalmente de acuerdo.

Si queréis concursar, hacerlo. Esos comentarios sobran.
Título: Concurso De Programacion
Publicado por: samsaga2 en 21 de Marzo de 2005, 12:17:02 PM
Cita de: "gdl"Creo que no es nada educado dar las pistas tan explícitas que estáis dando. Dando estas pistas lo único que se consigue es romper el concurso. :(

Es parte del concurso el buscar esos trucos.

Por favor. Un respeto a los que sí que queremos concursar.
No te preocupes en cuanto a esos trucos ayudan un poco pero unicamente con eso no vas a conseguir nada. La clave en reducir este programa es en encontrar un algoritmo eficiente en cuanto a ram, es decir, que no requiera generar una matriz en memoria.
Título: Concurso De Programacion
Publicado por: gdl en 21 de Marzo de 2005, 12:50:45 PM
 
CitarNo te preocupes en cuanto a esos trucos ayudan un poco pero unicamente con eso no vas a conseguir nada. La clave en reducir este programa es en encontrar un algoritmo eficiente en cuanto a ram, es decir, que no requiera generar una matriz en memoria.

En cualquier caso y al dar una pista en mitad del plazo (y dado que en el concurso tal y como está ahora sólo se puede enviar una participación) se están creando desigualdades entre los que han enviado ya su participación y los que todavía no han descubierto que existe el concurso.

Sobre todo si es como a mí ¡¡que no he aplicado alguna de las técnicas que se han dicho y ya lo envié!!

(nooo) ¡Tonto! ¡Tonto! ¡Tonto! (nooo)
Título: Concurso De Programacion
Publicado por: sés en 21 de Marzo de 2005, 01:23:05 PM
 gdl:

¿A qué viene es queja en el foro de MQO con enlace incluído a este hilo?
Entiendo tu mosqueo (a mí tb me jode), pero una cosa es que siente mal que algunos den pistas y otra es lo que has puesto en el foro.
¿Qué pasa, que ahora te unes a los "saboteadores"? ¿Para qué te quejas tanto si luego tú te comportas igual? En vez intentar que esos mensajes se borren, lo aireas en los foros de MQO: "¡hey, chicos, aquí hay pistas!" <_<

La regla de "un envío por persona" me parece perfecta. Si lo has enviado y ahora descubres que puedes rebajar... pues macho, usa el remedio casero: ajo y agua.


-= EDIT =-
Lo mejor que podrías hacer es borrar tu mensaje de MQO y esperar  a que un administrador borre los de este foro.
Título: Concurso De Programacion
Publicado por: gdl en 21 de Marzo de 2005, 01:46:59 PM
 
Citar"¡hey, chicos, aquí hay pistas!"

Aún así, creo que hecho bien.

El link a este foro es para que todos los concursantes (y no sólo los que lean este foro) tengan las mismas oportunidades (aun a costa de hacer más difícil que yo gane).

También espero que los administradores borren los mensajes, aunque creo que el daño está ya hecho y las pistas llevan ya bastante tiempo en línea. Incluso, si se borrasen, tendrían ventaja los que las hubieran leído.

A todos los que crean que he obrado mal, les pido disculpas. Empezando por sés.

Lo siento.
Título: Concurso De Programacion
Publicado por: ethernet en 21 de Marzo de 2005, 02:26:22 PM
 Estoy en mi derecho de poner lo que quiera, además, este foro es público y cualquiera puede leer esos consejos. Desde luego el ánimo de esos consejos era para ayudar a la gente de por aquí con el objetivo de que  se consiguieran los menos caracteres posibles.

Otra cosa, si ya lo has enviado (hablo para todos) y podrías haberte beneficiado de  lo que he puesto, quizás deberías olvidarte del premio y pensar en que es posible que haya gente que sepa mejor que tú optimizar el código y por tanto no lo merezcas.

Por esa regla de tres si hay un concurso de programación de juegos deberíamos borrar del foro todos los post referentes a ese tema para que todo el mundo tenga "las mismas oportunidades" y que así "tengan que buscarse la vida en internet" (stratos no es internet?).

Por último considero que no es descortés y maleducado poner unos consejos, que repito, SIRVEN PARA TODO EL MUNDO ya que este foro es ABIERTO AL PÚBLICO y que desde luego no van a hacer ganar a nadie porque estoy seguro que el que gane sabía esos y muchos más. Recuerdo que en este pais hay libertad de expresión y lo avala la Constitución, con lo cual no quiero niñerías.

PD: solo espero que los administradores de este foro tengan un mínimo de criterio y no borren lo que he puesto.

Título: Concurso De Programacion
Publicado por: samsaga2 en 21 de Marzo de 2005, 02:32:22 PM
 Puedes encontrar miles y miles de paginas webs via google explicando esos trucos y muchisimos mas. Que vas a hacer... prohibir que participen los que han usando la web? Entonces no quedaria ni un solo participante. Cualquiera puede aprender los trucos pero lo divertido es saber aplicarlos y ver los inventos que se monta la gente para reducir el programa al maximo.
Título: Concurso De Programacion
Publicado por: gdl en 21 de Marzo de 2005, 02:59:37 PM
Cita de: "samsaga2"Puedes encontrar miles y miles de paginas webs via google explicando esos trucos y muchisimos mas. Que vas a hacer... prohibir que participen los que han usando la web? Entonces no quedaria ni un solo participante. Cualquiera puede aprender los trucos pero lo divertido es saber aplicarlos y ver los inventos que se monta la gente para reducir el programa al maximo.

Estoy de acuerdo con lo que dices y también con lo que dice ethernet. Permíteme que te plagie un poco.

Creo que un concurso de este tipo es divertido por distintas razones:

- Buscar información
- Aprender los trucos
- Aplicar los trucos
- Ver los inventos para reducir el programa al máximo
- La competición

Entonces, estaréis conmigo que

- Proporcionar información
- Enseñar trucos
- Dar ejemplos de códigos
- Proporcionar inventos para reducir el programa al máximo
- Dar más ventajas a unos participantes que a otros

Rebaja el disfrute del concurso.

Cuando me refiero a la educación, me refiero a respetar a los demás, y en particular el difrute del concurso de los participantes.

No es mi intención censurar (ni que el administrador censure) nada de lo dicho. De hecho, gracias a los trucos de ethernet he aprendido algunas cosas que no sabía.

Título: Concurso De Programacion
Publicado por: sés en 21 de Marzo de 2005, 03:02:43 PM
 Estamos de acuerdo en que esos "trucos" no van a ayudar al que gane, pero recordemos que esto es un concurso. No veo lógico que se den pistas relacionadas con ningún concurso.

El concurso consiste en, además de encontrar un algoritmo eficaz, saberse estos "trucos" del lenguaje. El que concurse tiene que saberlo o saber dónde buscarlos.
Resumiendo: Es un concurso y los concursantes se lo tienen que currar solitos.

¿Qué pasaría si yo ya supiera que no voy a ganar y publico mi código? Con eso lo único que haría sería fastidiar a todos los que ya lo hayan enviado. Probablemente en mi código haya algo que otro no haya visto y pueda utilizar... o alguien tenga algo que yo no y lo aplique a mi código, lo modifique, lo envíe y gane.

Repito, esto es un concurso, el que no quiera participar debería quedarse al margen y ponto.

Por cierto ethernet, tu libertad acaba donde empieza la de los demás.
Eres totalmente libre de hacer lo que te venga en gana siempre que no perjudiques a nadie. Y explicar estos trucos solo puede perjudicar a los que ya lo enviamos.

Como dice samsaga2, en Internet puedes encontrar estos trucos... pues bien, que los busquen si no los saben. ¿En cuántos concursos se ayuda a los participantes?

Lo hecho hecho está, pero agradecería que nadie pusiera nada más y siga entorpeciendo el concurso.
Título: Concurso De Programacion
Publicado por: _Grey en 21 de Marzo de 2005, 03:12:46 PM
 No entiendo este conflicto que se ha generado. No veo ninguna prohibicion a leer foros de programacion para aprender trucos, o incluso hacer consultas si te viene en gana.

Yo no veo problema con que la gente hable en foros de programacion, de programacion. Nadie a puesto la version mas reducida posible y si la pusiera despues de enviarlo tampoco habria problema, por que seria el primero en enviarlo.

gdl, piensa que solo con los trucos de ethernet no se gana un concurso asi, y que tu tienes la ventaja de tenerlo enviado antes.

saludos.
Título: Concurso De Programacion
Publicado por: ethernet en 21 de Marzo de 2005, 03:25:42 PM
 Umh, creo que hay algo que hay que matizar: creo que no hubiera sido correcto (aunque prefectamente posible)  el exponer el código o un algoritmo concreto respecto al concurso, sin embargo yo he puesto unos trucos generales que no tienen para nada que ver con el concurso y que se pueden encontrar en internet con facilidad.

Solo me queda desearos suerte y que gane el mejor, no voy a hacer ningún comentario más acerca de esto

saludos



Título: Concurso De Programacion
Publicado por: sés en 21 de Marzo de 2005, 03:27:41 PM
 
Cita de: "_Grey"gdl, piensa que solo con los trucos de ethernet no se gana un concurso asi, y que tu tienes la ventaja de tenerlo enviado antes.
Él mismo ha dicho que no había caído en alguna cosa que se ha dicho, echa cuentas.
Si gdl dice que tiene algo menos de 129... imagina que hay alguien en su caso, lo reduce y lo envía. Ganará a gdl solo porque algunos han decidido poenr algunos trucos para el concurso.

Si eso se hubiera hecho el primer día a nadie le habría importado tanto, per oa estas alturas no tiene ningún sentido.

Y eso no es simplemente "hablar de programación", es explicar cosas relacionadas con un concurso que no ha terminado aun.

CitarNadie a puesto la version mas reducida posible y si la pusiera despues de enviarlo tampoco habria problema, por que seria el primero en enviarlo.
No puedes pensar eso en serio. Cualquiera podría coger ese código y reducirlo por algún sitio que se pasara por alto o aplicar algo de ese código al que ya tuviera.

Citarhe puesto unos trucos generales que no tienen para nada que ver con el concurso y que se pueden encontrar en internet con facilidad.
Lo primero es que se trata de que los concursantes se busquen la vida y lo segundo... ¿que no tienen que ver con el concurso? Yo alucino (ses)

No entiendo nada, vamos a ver. Que no se ha hablado de esas cosas "por casualidad", eso es una simple y llana interferencia en un concurso inacabado.

A ver, ¿alguien que participe ha revelado alguno de sus trucos? NO.
Pues eso.
Título: Concurso De Programacion
Publicado por: igon en 21 de Marzo de 2005, 05:04:30 PM
 Otro enlace.....
http://canalc.gulo.org/

se hicieron un par de concursos....viendo los codigos se pueden cojer ideas.

yo me planto en 176 y de ahi no bajo

( sin includes )
Título: Concurso De Programacion
Publicado por: ethernet en 21 de Marzo de 2005, 05:47:57 PM
Cita de: "igon"Otro enlace.....
http://canalc.gulo.org/

se hicieron un par de concursos....viendo los codigos se pueden cojer ideas.

yo me planto en 176 y de ahi no bajo

( sin includes )
Exactamente este es el concurso que me refería y que organizamos en el canal #c del hispano
Título: Concurso De Programacion
Publicado por: Mars Attacks en 21 de Marzo de 2005, 10:59:34 PM
Cita de: "zupervaca"a == 0 ? true : false;
Hombre, para poner eso mejor pones
a?false:true;

Sobre el tema del linchamiento a ethernet, si no sabíais esos trucos (que están por otras partes) pues no merecéis ganar, así que sigue siendo justo. Y si alguien no se los sabía y los ha visto ahora y ha mejorado el código, mejor para él por haber arriesgado a esperarse, volvéis a no merecer ganar. Para buscar información en internet hace falta alguien que la ponga.

(twist)  
Título: Concurso De Programacion
Publicado por: ethernet en 21 de Marzo de 2005, 11:46:41 PM
Cita de: "Mars Attacks"
Cita de: "zupervaca"a == 0 ? true : false;
Hombre, para poner eso mejor pones
a?false:true;


Para poner eso pones

!a


:P
Título: Concurso De Programacion
Publicado por: JuanK en 22 de Marzo de 2005, 05:20:35 AM
 Hola a todos...
llevo 8 dias con esto y no lo puedo creer...
solo llevo

224 caracteres
ANSI C
2 Warning
Imprime alineado a la izquierda y separando las columnas por tres espacios
recibe datos por scanf
evalua que solo se procesen los datos permitidos
tiene el #include stdio.h
Como es ANSI C NO USA NADA de la conio.h(por ejemplo getch o gotoxy)
Metodo de La Loubere



17   24   1    8    15
23   5    7    14   16
4    6    13   20   22
10   12   19   21   3
11   18   25   2    9



Estoy desesperado!!!!
no se que mas se le puede hacer!!!

no encuentro metodos mas cortos!!!!
no encuentro tecnicas o trucos diferentes de los que ya sabia y de uno que mencionaron que nyo no sabia!!!!

Y las veces que he tratado de hacer metodos mas cortos... o bien no sirven o bien sirven pero son mas largos...

Ahhhhhhhhhhhhhhhhhhhhhhhhh

Cronodragóooonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
me tienes al borde de un ataque...
me vas a ganar!!!
y eso no es lo malo lo malo es que me vas a ganar por una enoooooooooooooooooooooooooorme diferencia.

Y ademas hay gente que lo ha hecho mas corto!!!!

donde esta el truco!!! no he podido!!! y no soy novato en C... se un poco mas que el promedio.. pero aun asi no puedo reducir mi codigo mas de 100 caracteres para lograr ganarles!!!
_________________ (asco)
Título: Concurso De Programacion
Publicado por: sés en 22 de Marzo de 2005, 09:01:30 AM
 Supongo que tienes dos bucles (rellenar e imprimir) y eso hace que ocupe más. Aun así, puedo decirte que yo tenía un código de menos de 150 (sin el include) que lo hacía así.
Título: Concurso De Programacion
Publicado por: samsaga2 en 22 de Marzo de 2005, 10:19:28 AM
Cita de: "sés"Supongo que tienes dos bucles (rellenar e imprimir) y eso hace que ocupe más. Aun así, puedo decirte que yo tenía un código de menos de 150 (sin el include) que lo hacía así.
Sés... dame cita un dia de estos quiero un hijo tuyo   (genial)  
Título: Concurso De Programacion
Publicado por: sés en 22 de Marzo de 2005, 10:25:14 AM
 (ses) *huye*
Título: Concurso De Programacion
Publicado por: zupervaca en 22 de Marzo de 2005, 01:48:49 PM
Cita de: "ethernet"
Cita de: "Mars Attacks"
Cita de: "zupervaca"a == 0 ? true : false;
Hombre, para poner eso mejor pones
a?false:true;


Para poner eso pones

!a


:P
es un ejemplo de una formula para que lo vea la gente, ¿y para el retorno de carro no la podeis optimizar mas?  :P

saludos
Título: Concurso De Programacion
Publicado por: JuanK en 22 de Marzo de 2005, 02:15:37 PM
 
Cita de: sesSupongo que tienes dos bucles (rellenar e imprimir) y eso hace que ocupe más. Aun así, puedo decirte que yo tenía un código de menos de 150 (sin el include) que lo hacía así.

No entiendo como puedes hacerlo en un solo bucle sin usar gotoxy  :blink:,
se supone que si uso el gotoxy si logro hacerlo asi pero no se puede usar porque debe ser ANSI C.  O_O

Toy perdido!!!
Título: Concurso De Programacion
Publicado por: JuanK en 22 de Marzo de 2005, 02:17:55 PM
Cita de: "sés"Supongo que tienes dos bucles (rellenar e imprimir) y eso hace que ocupe más. Aun así, puedo decirte que yo tenía un código de menos de 150 (sin el include) que lo hacía así.
No entiendo como puedes hacerlo en un solo bucle sin usar gotoxy :blink:
se supone que si uso el gotoxy si logro hacerlo y logro quedar por debjo de 200
Pero no se puede usar porque debe ser ANSI C.  O_O

Toy perdido!!!  
Título: Concurso De Programacion
Publicado por: ethernet en 22 de Marzo de 2005, 02:48:47 PM
Cita de: "zupervaca"
Cita de: "ethernet"
Cita de: "Mars Attacks"
Cita de: "zupervaca"a == 0 ? true : false;
Hombre, para poner eso mejor pones
a?false:true;


Para poner eso pones

!a


:P
es un ejemplo de una formula para que lo vea la gente, ¿y para el retorno de carro no la podeis optimizar mas?  :P

saludos
Bueno, la fórmula de ejemplo la había puesto yo un par de post antes que tú, aunque está bien repetir para que se entere bien todo el mundo.

Con respecto a esto:


columna == N -1 ? '\r' : ' ';


se puede optimizar:


columna - N + 1 ? ' ' : '\r';


1 byte :P

ah y cambiado ' ' y '\r' por su número seguro que se ahorran caracteres (recordar que 'c' es entero no un char)
o sea:


columna - N + 1 ? 13 : 32;


en total 1 + 1 + 2 = 5 bytes


realmente no sé en qué contexto y con qué fin se usa así que puedo haber metido la gamba.

saludos
Título: Concurso De Programacion
Publicado por: raistlin en 22 de Marzo de 2005, 03:01:50 PM
 que divertido, hacerun programa qe al final acabe como

p = a : 1 :- 2 - N + 1 ? 13 : 32 + 3: 2 ? 12 == 12 ? (1 :- 2 - N + 1 ? 13 : 32);
Título: Concurso De Programacion
Publicado por: sés en 22 de Marzo de 2005, 03:33:00 PM
 ethernet, el concurso NO HA TERMINADO, ¿puedes hacer el favor de dejar de interferir y de ayudar a los participantes?

Sabes perfectamente de qué trata el concurso, así que deja de dar formas de optimizar. De eso precisamente trata el concurso.
Título: Concurso De Programacion
Publicado por: tewe76 en 22 de Marzo de 2005, 03:33:24 PM
 Sois todos unos frikis... :D :D
Título: Concurso De Programacion
Publicado por: Topper en 22 de Marzo de 2005, 03:48:25 PM
 Venga, no os piquéis así que parecéis niños chicos...   :P  
Título: Concurso De Programacion
Publicado por: zupervaca en 22 de Marzo de 2005, 04:23:57 PM
 una cosa es optimizar y otra muy diferente ahorrase bytes  :D

· columna == N -1 ? '\r' : ' '; <-- en esta se realiza una resta una comprobacion y se obtiene el resultado

· columna - N + 1 ? 13 : 32; <-- en esta se realiza una resta una resta, una suma, la comprobacion y se obtiene el resultado


eso no es optimizar es agregar un ciclo mas de cpu  ;)  
Título: Concurso De Programacion
Publicado por: ethernet en 22 de Marzo de 2005, 04:26:51 PM
Cita de: "zupervaca"una cosa es optimizar y otra muy diferente ahorrase bytes  :D

· columna == N -1 ? '\r' : ' '; <-- en esta se realiza una resta una comprobacion y se obtiene el resultado

· columna - N + 1 ? 13 : 32; <-- en esta se realiza una resta una resta, una suma, la comprobacion y se obtiene el resultado


eso no es optimizar es agregar un ciclo mas de cpu  ;)
En el contexto del hilo optimizar el ahorrarse bytes de código, esto me parece subrealista amigos, me parece que he perdido el rumbo.

¿?

Título: Concurso De Programacion
Publicado por: samsaga2 en 22 de Marzo de 2005, 04:28:02 PM
Cita de: "zupervaca"una cosa es optimizar y otra muy diferente ahorrase bytes  :D

· columna == N -1 ? '\r' : ' '; <-- en esta se realiza una resta una comprobacion y se obtiene el resultado

· columna - N + 1 ? 13 : 32; <-- en esta se realiza una resta una resta, una suma, la comprobacion y se obtiene el resultado


eso no es optimizar es agregar un ciclo mas de cpu  ;)
Ni mucho menos, == tambien es una operacion y mas costosa en cuanto a ciclos de CPU que hacer una suma y luego comprovar que sea distinto de cero.
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 22 de Marzo de 2005, 05:26:36 PM
 Osea zupervaca que has metido la gamba por los cuatro costados XD
Título: Concurso De Programacion
Publicado por: zupervaca en 22 de Marzo de 2005, 05:36:34 PM
Cita de: "samsaga2"
Cita de: "zupervaca"una cosa es optimizar y otra muy diferente ahorrase bytes  :D

· columna == N -1 ? '\r' : ' '; <-- en esta se realiza una resta una comprobacion y se obtiene el resultado

· columna - N + 1 ? 13 : 32; <-- en esta se realiza una resta una resta, una suma, la comprobacion y se obtiene el resultado


eso no es optimizar es agregar un ciclo mas de cpu  ;)
Ni mucho menos, == tambien es una operacion y mas costosa en cuanto a ciclos de CPU que hacer una suma y luego comprovar que sea distinto de cero.
vamos a ver, ¿tu que crees que por que no haiga un == no se realiza una comprobacion? es que me parto el pecho  :P

sobre lo del contexto del hilo vale, pero sobre esto ultimo ni hablar  :D  
Título: Concurso De Programacion
Publicado por: ZeruGiran en 22 de Marzo de 2005, 05:44:22 PM
 Al fin entendi como no usar una matriz y como hacerlo todo en un solo for.
:angry:

Ahora a quitar caracteres. Pero eso ya sera mañana. :)  
Título: Concurso De Programacion
Publicado por: igon en 22 de Marzo de 2005, 07:44:15 PM
 Menudos estais hechos :P

con un for si, pero me ocupa mas :(

y... sin matriz ¿? un simple array ??
Título: Concurso De Programacion
Publicado por: ethernet en 22 de Marzo de 2005, 08:20:21 PM
 La discusión de si es más eficiente hacer == o una resta tiene poco sentido, entre otras cosas porque el concurso no se refiere a ninguna arquitectura ya que se trabaja sobre algo supuestamente standard, ansi C, y que "debe" compilar cualquier compilador de C. En ciertas arquitecturas funcionará mejor una cosa y en otras otra, depende de para qué esté hecha esa arquitectura.

saludos

Título: Concurso De Programacion
Publicado por: ZeruGiran en 22 de Marzo de 2005, 08:55:14 PM
 Ni matriz, ni array, ni nada de memoria reservada.
B)

Tiempo invertido: 1.5 Horas;
Tiempo invertido a mi tesis: 0 horas;

:D
Título: Concurso De Programacion
Publicado por: fiero en 22 de Marzo de 2005, 09:13:33 PM
Cita de: "ethernet"La discusión de si es más eficiente hacer == o una resta tiene poco sentido, entre otras cosas porque el concurso no se refiere a ninguna arquitectura ya que se trabaja sobre algo supuestamente standard, ansi C, y que "debe" compilar cualquier compilador de C. En ciertas arquitecturas funcionará mejor una cosa y en otras otra, depende de para qué esté hecha esa arquitectura.

saludos
Ya puestos a sacarle punta al asunto:

El compilador lo convierte en un CMP o en un SUB, y ambas instrucciones tardan casi los mismos ciclos de reloj (ciclo arriba ciclo abajo). Me refiero a las antiguas instrucciones del 80386, porque ahora con tanta caché y paraleleces no se sabe ni lo que le cuesta, pero bueno...

11 salu2
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 05:11:45 AM
 220

Creo que muchos estan solo fanfarroneando con lo de los 130 o menos...
incluso 150 parece ser muy poco...

en un equema sencillo que diseñe nada mas para ver cuanto es el minimo de caracteres necesario para llenar e imprmir en la matriz o vector segun sea el caso....
y asumiendo que se usa solo un linea para imprimir, incluytendo el scanf y las validaciones  de que solo sea 3,5,7,9, los include  y nada mas, es decir sin nada que ver con el cuadrado... pues....

no dan menos de 121 caracteres....
acaso es posible resolver el cuadrado con nueve caracteres??? no creo..
al menos no de la manera que se llena un cuadrado magico impar que cumple la suma con todo y diagonales..
incluso pensar en 150 caracters es demasiado corto ya que segun mis cuentas eso solo serian 30 caracteres para dedicarce al algoritmo y con ello no se alcanzan a hacer las minimas comprobaciones de desbordmiento de indices dentro de la matriz, vector o lo que sea...

tengo mis dudas acerca de que lo que esten diciendo sea cierto y tambien las tengo en que puede que sea cierto pero es muy poco probable de que cumplan con ANSI C o que hagan todas las validaciones o que en efecto hagan lo que se pide tal cual.

:idea:

Todo esto esta muy sospechoso....

Solo me falta descartar la opcion de no usar matrices ni vectores...
pero no tengo idea de como hacen para imprimirlo sin usar matrices ni vectores ya que sin gotoxy es casi imposible imprimirlos en orden al menos con la cantidad de caracteres que mencionan...
Título: Concurso De Programacion
Publicado por: samsaga2 en 23 de Marzo de 2005, 08:12:31 AM
Cita de: "JuanK"220

Creo que muchos estan solo fanfarroneando con lo de los 130 o menos...
incluso 150 parece ser muy poco...

en un equema sencillo que diseñe nada mas para ver cuanto es el minimo de caracteres necesario para llenar e imprmir en la matriz o vector segun sea el caso....
y asumiendo que se usa solo un linea para imprimir, incluytendo el scanf y las validaciones  de que solo sea 3,5,7,9, los include  y nada mas, es decir sin nada que ver con el cuadrado... pues....

no dan menos de 121 caracteres....
acaso es posible resolver el cuadrado con nueve caracteres??? no creo..
al menos no de la manera que se llena un cuadrado magico impar que cumple la suma con todo y diagonales..
incluso pensar en 150 caracters es demasiado corto ya que segun mis cuentas eso solo serian 30 caracteres para dedicarce al algoritmo y con ello no se alcanzan a hacer las minimas comprobaciones de desbordmiento de indices dentro de la matriz, vector o lo que sea...

tengo mis dudas acerca de que lo que esten diciendo sea cierto y tambien las tengo en que puede que sea cierto pero es muy poco probable de que cumplan con ANSI C o que hagan todas las validaciones o que en efecto hagan lo que se pide tal cual.

:idea:

Todo esto esta muy sospechoso....

Solo me falta descartar la opcion de no usar matrices ni vectores...
pero no tengo idea de como hacen para imprimirlo sin usar matrices ni vectores ya que sin gotoxy es casi imposible imprimirlos en orden al menos con la cantidad de caracteres que mencionan...
Pero eso es dando por sentado que tienes que rellenar una matriz. Y si una cosa estan de acuerdo todos los que han conseguido reducir el programa la maximo es que hay que hacerlo sin matriz. Eso permite hacer cosas como por ejemplo imprimirlo todo usando tan solo un printf ya que puedes aprovechar el bucle principal. No he conseguido llegar a los 150 (me quede en los 194) pero creo que si se puede llegar.

De cualquier forma, en Abril acabaremos por salir de dudas.
Título: Concurso De Programacion
Publicado por: shephiroth en 23 de Marzo de 2005, 10:50:53 AM
 Lo primero, el post tuyo diciendo que 120 bytes o inclusive 150 te parece demasiado poco y lo pones en duda no te hace merecedor de ganar. Ese pensamiento de "como yo no he podido es imposible" te hará fracasar en la vida.

Cuando empecé me salieron unos 400 bytes con comprobaciones y demas.......pensaba que sería imposible, pero fijate, actualmente llevo 155 bytes..........asi que en vez de quejarte e indirectamente pedir ayuda, intenta buscar info por inet o simplemente intentar minimizar tu codigo.

Todos los caminos llevan a roma.......tarda menos el q da 1 vuelta a la tierra sin pararse, que el que se para a preguntar en cada esquina caminando en linea recta......otra cosa es q la distancia recorrida sea mas......
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 01:15:46 PM
 
Cita de: "shephiroth"Lo primero, el post tuyo diciendo que 120 bytes o inclusive 150 te parece demasiado poco y lo pones en duda no te hace merecedor de ganar. Ese pensamiento de "como yo no he podido es imposible" te hará fracasar en la vida.
la distancia recorrida sea mas......
-----------------------------------
:(  :mellow:
Fracasare en la visa buahahahahaha :'(

jejeje
no lo tomes tan a pecho...

tengo derecho a dudar  :lol:

Tambien cuando comcencé tenia casi 400 bytes (39?) ya ahora solo 220 ya con eso he ganado mucho en este concurso... la verdad ganar es lo que menos me interesa, ya he ganado bastante con todo lo que he aprendido reduciendo mi codigo y buscando en internet y en muchas fuentes... no creas que me la he pasado mirando para el techo.  :P

Cita de: "JuanK"Todo esto esta muy sospechoso....

Solo me falta descartar la opcion de no usar matrices ni vectores...
pero no tengo idea de como hacen para imprimirlo sin usar matrices ni vectores ya que sin gotoxy es casi imposible imprimirlos en orden al menos con la cantidad de caracteres que mencionan...

Ademas dije esto al final de mi post...
soy muy conciente de que pueden haber otras opciones pues no tengo la ultima palabra.

Tengo derecho a dudar no?  (uoh)

Por otro lado aunque tu actitud fue un poco pasada conmigo lo cierto es que si es una buena actitud pues tambien he sido duro con las personas en los foros que modero pues muchos realmente solo quieren que les hagan todo....

http://foros.solocodigo.com/index.php?showuser=2008

No pretendo que me digan como hacer las cosas.. haria falta que fueran 'locos' para que me regalaran su trabajo  (twist)
pero no perdia nada tanteando a que alguien dijera 'Ohhh si la verdad he mentido para ganar tiempo...' o cosas asi  ;)
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 01:53:12 PM
 Para que no digan que son mentiras...
#include<stdio.h>
int x,y,M[xx],n,N;
void main()
{
 scanf("%d",&n);
 if(n==3||n==5||n==7||n==9)
 {
    while(N==6)
    {
      M[x]=++N;
      printf("%d",M[x]);
    }
 }
}


He ideado esto para el ejemplo... no funciona pero es por estop que surgio mi duda...
como se daran cuenta este codigo no hace nada, solo imprimir como un vector y hacer unas validaciones....e imprime en una linea
asi no mas ya son 131 caracteres(si espacios ni saltos) por supuesto que lo podemos reducir de tamaño aplicando cosas que muchos sabemos y asi quedaria de 109 o para algunos quedaria aun menor.
Ahora este ejemlo no hace nada y si le agregamos el algotimo del cuadrado y las validaciones necesarias???
en el caso de que se resuelva con 129 caracteres solo nos quedan 23 disponibles en el ejemplo, que por cierto no sirve para la impresion...
No se como le han hecho pero sacar todo el algoritmo y validaciones en menos 23 caracteres es muy dificil!!!  O_O

Por eso eran mis dudas.

Seguire buscando.  :ph34r:  
Título: Concurso De Programacion
Publicado por: samsaga2 en 23 de Marzo de 2005, 05:00:36 PM
Cita de: "JuanK"Para que no digan que son mentiras...
#include<stdio.h>
int x,y,M[xx],n,N;
void main()
{
 scanf("%d",&n);
 if(n==3||n==5||n==7||n==9)
 {
    while(N==6)
    {
      M[x]=++N;
      printf("%d",M[x]);
    }
 }
}


He ideado esto para el ejemplo... no funciona pero es por estop que surgio mi duda...
como se daran cuenta este codigo no hace nada, solo imprimir como un vector y hacer unas validaciones....e imprime en una linea
asi no mas ya son 131 caracteres(si espacios ni saltos) por supuesto que lo podemos reducir de tamaño aplicando cosas que muchos sabemos y asi quedaria de 109 o para algunos quedaria aun menor.
Ahora este ejemlo no hace nada y si le agregamos el algotimo del cuadrado y las validaciones necesarias???
en el caso de que se resuelva con 129 caracteres solo nos quedan 23 disponibles en el ejemplo, que por cierto no sirve para la impresion...
No se como le han hecho pero sacar todo el algoritmo y validaciones en menos 23 caracteres es muy dificil!!!  O_O

Por eso eran mis dudas.

Seguire buscando.  :ph34r:
Siento decepcionarte pero a ese codigo que has presentado se la pueden sacar unos veinte caracteres mas o menos sin perder funcionalidad. Ademas estas poniendo una matriz quitala y vuelve a hacer cuentas.
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 05:30:17 PM
 
QUOTE (samsaga2)
Siento decepcionarte pero a ese codigo que has presentado se la pueden sacar unos veinte caracteres mas o menos sin perder funcionalidad. Ademas estas poniendo una matriz quitala y vuelve a hacer cuentas.[/quote]

Lo se, pero no me puedo poner a mostrarlo mas corto porque sino algunas personas del foro me van a decir que estoy dando pistas como le sucedio a Ethernet

Por eso decia esto:
QUOTE (JuanK)
asi no mas ya son 131 caracteres(si espacios ni saltos) por supuesto que lo podemos reducir de tamaño aplicando cosas que muchos sabemos y asi quedaria de 109 o para algunos quedaria aun menor.[/quote]

Por otro lado el codigo no usa una matriz usa un vector, aunque he visto que alguien dijo que se debe hacer sin matriz ni vectores ni nada.. pero aun no se ma ha ocurrido como, Actualmente lo tengo con un vector y lo llevo por 219 caracteres :'(
Título: Concurso De Programacion
Publicado por: ethernet en 23 de Marzo de 2005, 05:58:55 PM
 Tranquilo que si todo el código que pones es así no habrá protestas...  
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 06:12:05 PM
 jejejej
si por eso lo arme especialmente de esa manera... (nooo)

No vayan a creer que codifico asi de mal...
aunque si quieren coloco el que tiene reducido el codigo  ;)

O_O Pero no me conviene porque ... que tal alguien me gane!!!!
bahhh! (genial)  
Título: Concurso De Programacion
Publicado por: fiero en 23 de Marzo de 2005, 06:54:48 PM
 Bueno, está bien el concurso este, la verdad es que yo no participé porque no tengo ni idea de algoritmos para calcular el cubo, y me daba palo buscar. Aunque no me presente tenia curiosidad y me salen 11 bytes dentro del if para saber el valor correcto introducido. ¿está bien? ¿lo haceis en menos? bueno, si eso lo hablamos despues del consurso, que está la cosa caliente...

un saludo
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 06:57:08 PM
 14 bytes contando los parentesis   (genial)

veo que soy tremendamente malo en esto :(
Título: Concurso De Programacion
Publicado por: igon en 23 de Marzo de 2005, 07:11:28 PM
 Contando parentesis 13
Título: Concurso De Programacion
Publicado por: _Grey en 23 de Marzo de 2005, 07:18:09 PM
 
CitarPor otro lado el codigo no usa una matriz usa un vector, aunque he visto que alguien dijo que se debe hacer sin matriz ni vectores ni nada.. pero aun no se ma ha ocurrido como

JuanK, sin vector ni array:


while(N==6)
   {
     printf("%d",N++);
   }


No parece muy dificil, no???

Pasando a otra cosa...... 12, sin contar if ni parentesis.
De todas formas ya no uso if  :P  :P  :P

CALLAAAAA!!! (se escucha de fondo en tono de orden.....)

:rolleyes:

Saludos.
Título: Concurso De Programacion
Publicado por: igon en 23 de Marzo de 2005, 07:21:43 PM
 Tampoco uso if's realmente no tendo parentesis....solo validar que sea 3, 5 7 o 9 son 11 caracteres :)
Título: Concurso De Programacion
Publicado por: JuanK en 23 de Marzo de 2005, 10:44:01 PM
 
QUOTE (_Grey)
JuanK, sin vector ni array:

CODE

while(N==6)
   {
     printf("%d",N++);
   }


No parece muy dificil, no???[/quote]

Hola _Grey sabes no soy tan estupido como crees  (grrr)

Obviamente lo de los arrays me referia en el algoritmo del cuadrado propiamente dicho, trata de leer antes de Fantochar.  <_<  
Título: Concurso De Programacion
Publicado por: _Grey en 24 de Marzo de 2005, 12:10:21 AM
 
CitarHola _Grey sabes no soy tan estupido como crees mad2.gif

Ups! perdona, pero lei esto...

CitarPor otro lado el codigo no usa una matriz usa un vector, aunque he visto que alguien dijo que se debe hacer sin matriz ni vectores ni nada.. pero aun no se ma ha ocurrido como

y pense que por ahi estaba el asunto.... sorry.....

Saludos.
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 12:15:59 AM
 hola, bueno ya no me siento tan idiota...

voy 147 caracteres sin usar matrices ni vectores e imprimiendo todo en una sola linea  :ph34r:  
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 01:09:09 AM
 umm
bueno me faltaba controlar unas cosas
ya las coloque pero me aumentaron unos bytes.. aunque tambien reduje unos cuantos...
el if lo hago con 7 bytes dentro del parentesis y funciona OK para todos los casos. (uoh)

Veremos que no haya que cambiarlo luego  (ole)
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 02:29:55 AM
 :blink:
umm  tendre que aprender mucha matematica para poder aproximarme a los 130
Título: Concurso De Programacion
Publicado por: Mars Attacks en 24 de Marzo de 2005, 04:58:37 AM
 
while(N==6)
   {
     printf("%d",N++);
   }


¿Y si sólo hay una orden dentro del while para qué quieres los "{"?
Si en vez de N==6 pones N-6 también te ahorras uno.

Ethy, ¿me explicas dónde colocas la parte de sentencias del true y del false en tu "!a"? No he entendido tu cambio.
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 24 de Marzo de 2005, 07:12:07 AM
Cita de: "Mars Attacks"Ethy, ¿me explicas dónde colocas la parte de sentencias del true y del false en tu "!a"? No he entendido tu cambio.
mande??

!a devolverá true si 'a' es cero, y false en caso contrario.
Título: Concurso De Programacion
Publicado por: ethernet en 24 de Marzo de 2005, 11:31:16 AM
Cita de: "CoLSoN2"
Cita de: "Mars Attacks"Ethy, ¿me explicas dónde colocas la parte de sentencias del true y del false en tu "!a"? No he entendido tu cambio.
mande??

!a devolverá true si 'a' es cero, y false en caso contrario.
déjalo colson, es medio grafo, no hay nada que hacer :P

marsy ;@@
Título: Concurso De Programacion
Publicado por: Mars Attacks en 24 de Marzo de 2005, 03:22:17 PM
 Capullos de mierda, con "false" y "true" me refiero a "sentencias que hacer en caso de que a sea falso" y "sentencias que hacer en caso de que a sea verdadero"  <_<

Ale, iros a jugar con los playmobil, anda. Tanto código os corroe las neuronas  :P  
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 07:44:25 PM
 146  (uoh)

gdl , me imagino que cuando hablas de backtracking utilizas recursividad verdad?
O_O  Ni se me ocurre como aplicarla sin aumentar caracteres.

Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
pero el mismo cronodragon dijo que si lo usaba
asi que tendre que buscar 17 o mas bytes que me sobren, lo cual segun veo no sucede en nin caso...

Asi qye tendre que seguir buscando pistas matematicas antes de enviarlo y que no me pase lo de _Grey que lo envio antes de mejorarlo mas de lo que lo habia hecho.
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 08:55:54 PM
 143  :huh:

De donde diantres puedo descontar 23 caracteres o al menos 14 para igualar a cronodragon? (grrr)
Título: Concurso De Programacion
Publicado por: gdl en 24 de Marzo de 2005, 09:08:53 PM
 
Cita de: "JuanK"gdl , me imagino que cuando hablas de backtracking utilizas recursividad verdad?

Usé el backtracking para comprobar que la estructura de la expresión matemática que genera el cuadrado mágico es la de mínima longitud. No usé recursividad en el propio código porque lo aumenta de tamaño (unos cinco bytes).

Y eso no es bueno :D
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 09:13:21 PM
 
CitarUsé el backtracking para comprobar que la estructura de la expresión matemática

dirás que soy muy ignorante...

pero entonces que es hacer backtracking? como se hace? o con que temas se relaciona para poder buscar y aprender a hacerlo?

Estudias matematicas o algo asi?
Título: Concurso De Programacion
Publicado por: sés en 24 de Marzo de 2005, 09:18:25 PM
Cita de: "JuanK"Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
Pero eso es obligatorio ^_^
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 09:22:13 PM
Cita de: "sés"
Cita de: "JuanK"Llegue a los 129 de cronodragon
quitando esto:

#include = 17 caracteres,
Pero eso es obligatorio ^_^
En serio??
Ya he leido eso 1' de veces...
nadie ha dicho que no lo sea.
Título: Concurso De Programacion
Publicado por: nostromo en 24 de Marzo de 2005, 09:44:57 PM
 
Citarpero entonces que es hacer backtracking?

Es un esquema/patron para resolver problemas a lo bruto. Consiste en probar casi todas las posibles soluciones a un problema hasta encontrar la/s solucion/es correctas.

Citarcomo se hace?

Lo importante es definir el problema y su espacio de soluciones.
Un ejemplo tonto: dados dos numeros x e y. Si 1<=x<=10 1<=y<=10  ¿cuando sumarán x+y=10?
Espacio de soluciones: todos los pares (x,y) con 1<=x<=10 1<=y<=10  ...tendrás que probar las combinaciones...

Se puede hacer recursivamente o sin recursividad, esto no tiene que ver con backtracking. Lo que caracteriza a backtracking es que recorre "un arbol" de soluciones, donde cada nodo es una posible solucion  y puede descartar ramas enteras con lo que acelera algo el proceso.

Citaro con que temas se relaciona para poder buscar y aprender a hacerlo?
Algoritmos.
Libros:
Aho, A.V.; Hopcroft, J.E.; Ullman, J.D.: Estructura de datos y algoritmos. Addison- Wesley, 1988.
- Brassard, G.; Bratley, P.: Fundamentos de Algoritmia. Prentice-Hall, 1998.
- Cormen, Leiserson, Rivest: Introduction to algorithms. MIT Press, 1991.


Un saludo
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 09:54:49 PM
  (ole)
te debo una
mil gracias nostromo!!!

Veremos si puedo hacer algo con lo que tengo del algoritmo sino pues ya aprendi algo nuevo  (nooo)

Gracias de nuevo.
Título: Concurso De Programacion
Publicado por: _Grey en 24 de Marzo de 2005, 10:06:34 PM
 
Aprovechando que sale el tema; me quede impresionado cuando lei esto de gdl:

CitarHe hecho unas búsquedas de árboles de expresión con backtracking y las únicas expresiones que he encontrado eran modulares (% en C) y necesitaban unos 120bytes.

Mas que nada por que no tengo idea de que queria decir. Despues de buscar un poco, encontre algo de arboles sintacticos en un libro de compiladores, cuando dices "árboles de expresión con backtracking" te refieres a que has optimizado una determinada expresion haciendo un arbol con ella ,nop???

Ni sabia que se podia hacer .... en mi libro de "Fundamentos de programacion" el trato que se le da a los arboles se aleja de esas esquisiteces... me tendria que comprar algo mas actualizado supongo.

Saludos, y suerte!
Título: Concurso De Programacion
Publicado por: Pogacha en 24 de Marzo de 2005, 11:00:51 PM
 Un backtracking supongo que sabes que es, pruebar todas las combinaciones con algunas restricciones de corte y en orden por corazonada, o sea hago un algoritmo que combine todas las expresiones posibles restringiendo a que sean validas y que den el resultado que quiero con el minimo largo posible y lo dejo correr, el algoritmo es np y por ende no seria practico pero lo bueno es que lo puedes dejar corriendo y el ultimo dia  tomas la mejor solucion que has hecho, de todas maneras el algoritmo seria muy complejo y dudo que realmente lo halla implementado de la forma que se me ocurre a mí, seguramente pudo haber restringido a la parte matematica estricta con aritmetica simple y tan solo ir de cabeza a la expresion de la funcion ElementoDelCuadradoMagicoDeNImpar(n,x,y), o sea con las operaciones basicas, de todos modos el algoritmo seria complicado y digno de aplaudir...
Saludos
Título: Concurso De Programacion
Publicado por: gdl en 24 de Marzo de 2005, 11:27:39 PM
Cita de: "Pogacha"seguramente pudo haber restringido a la parte matematica estricta con aritmetica simple y tan solo ir de cabeza a la expresion de la funcion ElementoDelCuadradoMagicoDeNImpar(n,x,y), o sea con las operaciones basicas

En efecto. Sólo usé las operaciones muy muy básicas. De hecho, he tenido un problemilla con la parentización. Todos los operadores (incluso las constantes porque al ser el N máximo 9, son todas de un carácter) ocupan un caracter. ¡Excepto el de paréntesis! Me he dado cuenta que tener el árbol con el menor número de nodos no es igual a tener la expresión más corta. Así que, hoy por hoy ya no estoy seguro de tener la expresión mínima teórica.  (grrr)
Título: Concurso De Programacion
Publicado por: JuanK en 24 de Marzo de 2005, 11:32:19 PM
 cielos ahora tendre que centrarme solo en alcanzar o vencer a cronodragon,
aunque con lo que dijiste solo quedaron en claro 2 cosas para mi:

1- Cronodragon tiene el codigo mas corto
2- No he entendido un pito de lo que es el backtracking
Título: Concurso De Programacion
Publicado por: Mars Attacks en 25 de Marzo de 2005, 12:00:42 AM
 Pues una traza de un ejemplo sencillo. Para resolver la ecuación x+y<2 con x e y en el rango entre 0 y 9 lo resolverías así:
x=0
y=0
x+y<2? sí -> x=0, y=0 es una solución
x=1
y=0
x+y<2? sí -> x=1, y=0 es una solución
x=2
y=0
x+y<2? no
x=3
y=0
x+y<2? no
...
x=0
y=1
x+y<2? sí -> x=0, y=1 es una solución
x=1
y=1
x+y<2? no
x=2
y=1
x+y<2? no
...
y así hasta que se hayan probado todos los valores. Dicho de otro modo: tanto si aciertas como si fallas, vuelves atrás hasta el último cambio y pruebas el siguiente elemento.

Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 12:33:10 AM
 oops
es demasiado complicado!!!
para aplicarlo al sistema que tengo.


alguien tiene una solucion menor 144 caracteres
y que no sea cronodragón?
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 04:17:03 AM
 Ahora si, a reducir el tamaño:  :)

Primer intento: 225 caracteres.
Segundo intento: 181 caracteres.
Tercer intento: 174 caracteres.

Y creo que ahi me planto :'(
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 04:20:56 AM
 143

alguien ha hecho menos diferente de cronodragon?
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 04:53:54 AM
 cuarto intento: 172
quinto intento: 167
(shit)  (shit)  (shit)   :angry:  
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 07:14:22 AM
 descanso... tv, leche con galletas, telefono.
sexto intento:  159 Caracteres  :blink:

Ya no veo nada... pero cada vez digo lo mismo y luego encuentro algo :D
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 07:21:04 AM
 Joer algo que era ovio :angry: y ahora estamos en ...
153 caracteres :D Septimo intento.

Octavo 151 Caracteres;

Con solo 3 variables;
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 08:37:04 AM
 146 ñañaña ñañaña :D

3 mas JuanK  :angry:  :)
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 10:30:05 AM
 Me parece que Cronodragon estaba inventado o tal vez algo se le paso en el codigo. Llegue a tener menos de 140 pero tenia mal la validacion. Luego la corregi y llegue a ??? jejeje :)

Ya envie mi codigo :)

Ya perdi demaciado tiempo :P, pero me diverti mucho ,espero que organisemos mas concursos de estos.

Saludos.
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 03:55:37 PM
 a cuanto llegaste???
espero que no a 143 porque lo habrias enviado primero que yo...  (que tramposo (grrr)  ) (discusion)

en todo caso creo que lo puedo reducir mas si me pongo con lo del backtracking... despues te cuento  :ph34r:  
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 04:08:34 PM
 141...
espero que no hallas llegado a eso... igual si llegaste no importa aun lo puedo reducir más  (twist)
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 04:29:44 PM
 tambien hace tiempo que solo uso 3 variables
ñañañaña (genial)  
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 04:34:18 PM
 137  :D  (ole)  (twist)  (uoh)

No creo, segun leo,  que hayas llegado a eso ZeruGiran.
Y eso que aun No he intentado reducir la parte matematica...
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 05:00:39 PM
 jejejeje menos de 137  (twist)  (nooo)  
Título: Concurso De Programacion
Publicado por: ZeruGiran en 25 de Marzo de 2005, 05:34:24 PM
 :blink:  O_O

Yo 142 argggg!! (nooo)  No te creo :P

:(
Título: Concurso De Programacion
Publicado por: tewe76 en 25 de Marzo de 2005, 06:03:52 PM
 We are living in a freaky world
freaky freaky freaky... freaky!
We are living in a freaky world
freaky freaky freaky... freaky you all!!!


:D Sin ánimo de ofender, ¿eh? Me divierte veros pelear por unos caracteres...
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 06:41:55 PM
 como dijera Trinity en Matrix Reload
'Believe it'  (twist)

y ya me estoy aburriendo de tratar de reducir la ecuacion.  O_O
asi que es probable que lo pase asi.
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 08:37:08 PM
 Enviado, ya me canse.
137 caracteres contados desde MS Word.
Título: Concurso De Programacion
Publicado por: ShAq en 25 de Marzo de 2005, 10:18:35 PM
 esto, te recomiendo que mires mejor el numero de bytes del fichero,
seleccionas y Alt+Enter en windows, o boton derecho propiedades.
Título: Concurso De Programacion
Publicado por: JuanK en 25 de Marzo de 2005, 10:21:24 PM
 = aunque se mire el numero de bytes del fichero habria bytes diferentes para el ENTER segun el editor ya que si guardan estilo unix ocuparian un byte y si lo hacen estilo windows ocuparian dos bytes  ;)  
Título: Concurso De Programacion
Publicado por: sés en 25 de Marzo de 2005, 10:33:25 PM
 ¿Has leído bien las reglas? Gana el que ocupe menos BYTES el fichero .c

:P
Título: Concurso De Programacion
Publicado por: JuanK en 26 de Marzo de 2005, 01:49:09 AM
 a eso voy

es el mismo vacio que con el inlcude
si usan compiladores o editores que guarden los ENTER como CR/LF (la mayoria bajo windows) o si usas editores que solo guarden en CR (la mayoria bajo UNIX) habra desventaja para los que usaron editores comunes en windows y no se fijaron en esto a la hora de enviar sus trabajos.

¿O no has visto nunca esas diferencias en los diferentes editores y/o sistemas operativos?


:P  
Título: Concurso De Programacion
Publicado por: fiero en 26 de Marzo de 2005, 10:32:40 AM
 Creo que todo el mundo ha hecho un solo retorno de linea en su fichero, el que debe haber en la línea del include

un saludo
Título: Concurso De Programacion
Publicado por: ethernet en 26 de Marzo de 2005, 11:13:55 AM
 tr -d '\r' < fichero_win > fichero
Título: Concurso De Programacion
Publicado por: JuanK en 26 de Marzo de 2005, 04:26:14 PM
 
Cita de: "fiero"Creo que todo el mundo ha hecho un solo retorno de linea en su fichero, el que debe haber en la línea del include
Creo que no entendiste nada de lo que dije.
Si digo que un enter usa dos caracteres me refiero a que esos dos caracteres usan dos bytes al menos esto sucede en la mayoria de los editores hechos para windows eso se puede ver en un archivo con esta frase:

HOLA
PRUEBA DE ENTER


Si se usa un editor de windows  y abrimos el archivo en modo binario veremos:

48 4F 4C 41 0D 0A 50 52  55 45 42 41 20 44 45 20    HOLA..PRUEBA DE
45 4E 54 45 52 0D 0A                                ENTER

Si se fijan los numeros 0D 0A aparecen cada vez que hay un enter estos numeros equivalen a los caracteres nro 10 y 13 de la tabla ASCII los cuales con

10:CR   = Retorno de carro
13:LF    = Relleno de linea

Bien por eso el enter en la mayoria de editores de windows ocupa 2 bytes.

Ahora veremos el mismo caso en un editor de unix, este es el resultado de abrir el archivo en modo binario:

48 4F 4C 41 0D 50 52  55 45 42 41 20 44 45 20    HOLA.PRUEBA DE E
45 4E 54 45 52 0D                                NTER


Si se  fijan ahora ya no hay dos caraceres por cada enter sino que solo hay uno:

10:CR   = Retorno de carro

Por eso aunque halla un solo ENTER en cada archivo, segun el editor que hayan usado ese unico enter puede ocupar uno o dos bytes, lo cual es injusto pues para los que usaron editores tipo widows siempre aparacera un byte mas que para los que usaron editores tipo UNIX.

QUOTE (Ethernet)
tr -d '\r' < fichero_win > fichero[/quote]
Que es eso? es algo para UNIX?
Título: Concurso De Programacion
Publicado por: seryu en 26 de Marzo de 2005, 05:42:06 PM
 es un trim, es para cargarse los retorno de carro.
Título: Concurso De Programacion
Publicado por: JuanK en 26 de Marzo de 2005, 05:56:26 PM
 umm ya veo pero entonces el comando quitaria los retornos de carro nada mas...
y que ganamos con eso?
si igual los de UNIX quedarian sin el CR y los de windows tambien pero consevarian el LF... sigue existiendo un byte de diferencia
Título: Concurso De Programacion
Publicado por: fiero en 26 de Marzo de 2005, 07:33:16 PM
Cita de: "JuanK"Creo que no entendiste nada de lo que dije.
XD ... Hace más de 10 años que sé el asunto del 10,13  XD... Sólo me refería a que la diferencia será de solo 1 byte, mil perdones

un saludillo
Título: Concurso De Programacion
Publicado por: shephiroth en 26 de Marzo de 2005, 09:31:59 PM
 Puede que solo sea 1 byte, ahi tamos todos deacuerdo........pero frente a un mismo codigo un usuario de linux sacaría 1 byte menos.....

Imaginate que a dia de hoy tu mandas un codigo de 100 bytes.....yo sin saberlo mañana mando otro diferente tambien de 100 bytes. Segun las reglas a igual tamaño gana el q lo envie antes, pero o, sorpresa!! Tu lo hiciste en linux y tu enter era 1 byte, yo lo hice en wind y mi enter ocupaba 2 bytes.....en resumen, tu codigo sin enter son 99 bytes, y el mio sin enter 98........quien debería ganar????

Sinceramente, en mi opinion lo del include se resolvió mal.....habria que haberlo hecho sin ese include......si es un include "obligatorio" que todos vamos a tener que mas da ponerlo???? Obviamente quisieron "premiar" a los usuarios de linux a la vez que a los usuarios de windows que se buscasen la manera de arreglar ese problema xDD

P.D: Juank te felicito por tu cambio, has conseguido un codigo bastante reducido ;) yo no consigo bajar de 150.....creo q cambiare de sistema >_<
Título: Concurso De Programacion
Publicado por: JuanK en 27 de Marzo de 2005, 12:49:07 AM
Cita de: "fiero"
Cita de: "JuanK"Creo que no entendiste nada de lo que dije.
XD ... Hace más de 10 años que sé el asunto del 10,13  XD... Sólo me refería a que la diferencia será de solo 1 byte, mil perdones

un saludillo
oops
tienes razon he estado muy estresado, mis disculpas.
Título: Concurso De Programacion
Publicado por: JuanK en 27 de Marzo de 2005, 12:50:44 AM
Cita de: "shephiroth"Puede que solo sea 1 byte, ahi tamos todos deacuerdo........pero frente a un mismo codigo un usuario de linux sacaría 1 byte menos.....

Imaginate que a dia de hoy tu mandas un codigo de 100 bytes.....yo sin saberlo mañana mando otro diferente tambien de 100 bytes. Segun las reglas a igual tamaño gana el q lo envie antes, pero o, sorpresa!! Tu lo hiciste en linux y tu enter era 1 byte, yo lo hice en wind y mi enter ocupaba 2 bytes.....en resumen, tu codigo sin enter son 99 bytes, y el mio sin enter 98........quien debería ganar????

Sinceramente, en mi opinion lo del include se resolvió mal.....habria que haberlo hecho sin ese include......si es un include "obligatorio" que todos vamos a tener que mas da ponerlo???? Obviamente quisieron "premiar" a los usuarios de linux a la vez que a los usuarios de windows que se buscasen la manera de arreglar ese problema xDD

P.D: Juank te felicito por tu cambio, has conseguido un codigo bastante reducido ;) yo no consigo bajar de 150.....creo q cambiare de sistema >_<
:P
gracias
claro que no le pude ganar a Cronodragon :(
Título: Concurso De Programacion
Publicado por: sés en 30 de Marzo de 2005, 09:41:01 AM
 ^_^ Último día...

Más de uno debe haberse dejado las uñas rascando bytes :P
Título: Concurso De Programacion
Publicado por: gdl en 30 de Marzo de 2005, 11:58:48 AM
 Ahora empezarán a mordérselas esperando el resultado :D
Título: Concurso De Programacion
Publicado por: shephiroth en 30 de Marzo de 2005, 12:05:42 PM
 Wenas.

La verdad que fue/es un concurso interesante.......y no creo q termine hoy, solo cambiará de etapa.......mañana ya se podrán empezar a colgrar codigos por aqui y por alla, cada uno veremos las sutilezas de los demas........los grandes se veran elogiados y los peqeños aprenderemos un poco  (ole)  (ole)  ;)

Na, no he enviado el codigo, no creo necesario el enviarlo, me salieron 148/149 al final, muy lejos de los 126/127/129 de cronodragon y el otro (me disculpe pero no me acuerdo el nombre  (nooo) )

Solo espero que se sigan haciendo concursos de este tipo, me he dibertido muchisimo  B)  
Título: Concurso De Programacion
Publicado por: JuanK en 30 de Marzo de 2005, 03:16:05 PM
 para mi esta claro que el ganador es cronodragón  :lol:  (ole)  
Título: Concurso De Programacion
Publicado por: sés en 30 de Marzo de 2005, 03:19:52 PM
 ¿Tú crees? :P
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 05:00:54 PM
 (ses) Una semana para conocer el ganador...
Título: Concurso De Programacion
Publicado por: JuanK en 31 de Marzo de 2005, 05:48:35 PM
 pero ya sabemos que fue cronodragon, asi que cual es el afan?

para mi eso es evidente.
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 06:13:25 PM
 ¿Crees que nadiie ha bajado de esos 129?
Título: Concurso De Programacion
Publicado por: Pogacha en 31 de Marzo de 2005, 06:13:58 PM
 Pudo equivocarse ...
O tal vez un caballero misterioso aparece con 96 bytes de codigo ...
Título: Concurso De Programacion
Publicado por: MA]Mestre en 31 de Marzo de 2005, 06:35:03 PM
  :ph34r:  :ph34r:  yo tengo 1/8byte  :ph34r:  :ph34r:
Título: Concurso De Programacion
Publicado por: fiero en 31 de Marzo de 2005, 07:47:54 PM
 A mi tambien me ha sorprendido lo de 1 semana. Vamos, que tampoco es tan difícil, se coge el fichero más pequeño y se comprueba que cumple con todas las especificaciones...
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 07:55:08 PM
 Yo tampoco lo veo tan complicado... en fin.
gdl... te voy a ganaaaaaaar ò.ó
Título: Concurso De Programacion
Publicado por: JuanK en 31 de Marzo de 2005, 08:21:25 PM
 ya dijeron que no cuentan los espacios ni nada eso, ni los enter...
cronodragon sin quitar espacios, tabuldores, o ENTER tenia 129 y quitandolos le quedo en 125.
ademas Cronodragon es muy experimentado y aunque existe la posbilidad de que lo haya hecho mal lo cierto es que esta posibilidad es tremendamente baja, o al menos eso creo yo.

más informacion de cronodragon en :

foro Teleportmedia

Por otro lado una semana pareceria mucho...
pero recuerden que deben compilar y probar todos los programas y las pruebas son desgastantes y una vez probados completamente se entrarian a revisar solo los que cumplieron en todos los casos:
revisar ANSI C, contar carateres ..

eso quita tiemp mas cuando no podemos disponer de que el admin no haga nada mas en todo el dia porque seguramente que si tiene  mucho que hacer fuera del trabajo en el foro y la revista.
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 08:28:36 PM
 Te confundes, cuenta todo. Lo único que dijeron es que contarían los saltos de línea igual para todos.

Además de retorcer la sintaxis de C, el eliminar espacios, tabuladores y demás es una parte fundamental de este concurso y deben contar los que haya.
Esto cronodragon lo sabía. Si envió el código con espacios extra es un fallo suyo.

Por cierto, ¿por qué esa fijación en que ganará él cuando algunos ya han dicho que tienen menos? ^_^
Título: Concurso De Programacion
Publicado por: JuanK en 31 de Marzo de 2005, 08:32:49 PM
 lo que pasa es que cronodragon uso el devc++ y por eso le quedaba en 129 pero normalmente seria solo 125 eso entendi yo.

Por otro lado cronodragon es un amigo mio pues nos conocemos en el foro de teleportmedia y de solocodigo ya hace unos años...

la verdad para mi que el va a ganar, y ya que no fui yo pues que bueno que sea un amigo y que sepa tanto.  
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 08:40:26 PM
Cita de: "JuanK"lo que pasa es que cronodragon uso el devc++ y por eso le quedaba en 129 pero normalmente seria solo 125 eso entendi yo.
¿De dónde saca el Dev-C++ esos 4 bytes de diferencia?, porque la mayoría tenemos solo un salto de línea: el obligatorio del include.
Título: Concurso De Programacion
Publicado por: fiero en 31 de Marzo de 2005, 08:53:17 PM
 Vamos, ¡empezar a postear códigos! XD,  qué mas dá, la suerte está echada, podemos ir comentando lo que habeis enviado mientras se deciden

un saludo
Título: Concurso De Programacion
Publicado por: JuanK en 31 de Marzo de 2005, 08:58:21 PM
 Código enviado por de JuanK (version con espacios, enter etc.)
#include<stdio.h>
i,j,N;main()
{
for(scanf("%1d",&N);j=N&N>2&++i<=N;puts(""))
 for(;j<=N;)
  printf("%-4d",1+(i+j*2-2)%N+N*(((N-3)/2+i+j++)%N));
}


Este es el mio..
los dejo me voy a reunion de trabajo y esta para laaaaaaaaaaaaaaaaargo
hablamos luego.
Título: Concurso De Programacion
Publicado por: sés en 31 de Marzo de 2005, 09:46:29 PM
 Argh... mira que no caer en el "%1d" (nooo)... lo hubiera dejado en 121 bytes.

Aquí está el mío (125 bytes):
#include<stdio.h>
N, i;
main()
{
 for(
   scanf ("%d", &N );
   N>2&N<10&N&i<N*N;
   printf( ++i%N ? "%-3d" : "%d\n", (i*2-i/N)%N*N+(N/2+i-i/N)%N+1 )
 );
}
Título: Concurso De Programacion
Publicado por: gdl en 31 de Marzo de 2005, 10:40:57 PM
 Mmmm....

Creo que ninguno de esos códigos funciona ¿no?

El de JuanK se traga un 71 y pone el cuadrado de dimensión 7 (el "%1d" del scanf() te está traicionando)

y el de sés no suma bien las diagonales (creo que le falta un +1 al lado del N/2).


Pondré el mío para que también le saquéis pegas. Esta no es la versión del concurso (la del concurso tiene un "int " más  (nooo)  ) y ésta tiene retornos de línea, etc.

#include<stdio.h>
i,n;
main()
{
 for(scanf("%d",&n); 680>>n&i<n*n; ++i)
   printf("\n%-3d"+!!(i%n),(i+i/n+158)%n*n+(i+i+i/n+1)%n+1);
}


Por cierto, sés, ¡hemos llegado a la misma expresión! (Creo que es la mínima)

Usé el siguiente programa para buscar esa mínima expresión (alguno tenía curiosidad por ahí). Está hecho para VC++7 modo consola. Ya expliqué que no es lo mismo que tenga un número de operadores mínimos a un tamaño mínimo en caracteres en otro post, así que no puedo asegurar que sea la mínima, mínima.

Ojo que tarda un ratillo en ejecutarse (obtiene 16 expresiones válidas).


Edit: Son 122 caracteres sin contar el retorno de carro ¿no?
Título: Concurso De Programacion
Publicado por: Pogacha en 31 de Marzo de 2005, 11:21:54 PM
 #include<stdio.h>
i,n;main(){for(scanf ("%d", &n );n>2&n<10&n&i<n*n;printf(++i%n?"%-3d":"%d\n", (n^(i+n*7+n)%n+i)%n));}

Estos son 120 bytes.
Título: Concurso De Programacion
Publicado por: MA]Mestre en 31 de Marzo de 2005, 11:43:38 PM
 Peacho codigos...  (ole)  me dijeron que habian tortas... pero tantas ? jejejejejeje... :lol:

Se dan de plazo una semana, pq el que lo lleva a parte de ser el "encargado" de mediar en el MQO, tiene otros marranes mas chungos en donde curra, además me ha dicho que quiere mirar con "lupa" el posible ganador.

Suerte !!!!!!!!!!!!

Título: Concurso De Programacion
Publicado por: gdl en 31 de Marzo de 2005, 11:48:35 PM
 Pogacha, las reglas decían claramente "conteniendo los números naturales desde 1 a N * N".

MA]Mestre, quizá publicando los códigos y abriendo una "fase de alegatos" se simplifique la cosa. ¿no?
Título: Concurso De Programacion
Publicado por: MA]Mestre en 31 de Marzo de 2005, 11:53:55 PM
 Es una buena idea, se lo comentare a ver que opinan...
Título: Concurso De Programacion
Publicado por: JuanK en 01 de Abril de 2005, 01:20:10 AM
 
Cita de: "gdl"Mmmm....

Creo que ninguno de esos códigos funciona ¿no?

El de JuanK se traga un 71 y pone el cuadrado de dimensión 7 (el "%1d" del scanf() te está traicionando)

y el de sés no suma bien las diagonales (creo que le falta un +1 al lado del N/2).


Pondré el mío para que también le saquéis pegas. Esta no es la versión del concurso (la del concurso tiene un "int " más  (nooo)  ) y ésta tiene retornos de línea, etc.

#include<stdio.h>
i,n;
main()
{
 for(scanf("%d",&n); 680>>n&i<n*n; ++i)
   printf("\n%-3d"+!!(i%n),(i+i/n+158)%n*n+(i+i+i/n+1)%n+1);
}


Por cierto, sés, ¡hemos llegado a la misma expresión! (Creo que es la mínima)

Usé el siguiente programa para buscar esa mínima expresión (alguno tenía curiosidad por ahí). Está hecho para VC++7 modo consola. Ya expliqué que no es lo mismo que tenga un número de operadores mínimos a un tamaño mínimo en caracteres en otro post, así que no puedo asegurar que sea la mínima, mínima.

Ojo que tarda un ratillo en ejecutarse (obtiene 16 expresiones válidas).


Edit: Son 122 caracteres sin contar el retorno de carro ¿no?
gdl,
el tuyo se revienta con cualquiera que comience por 7 y sea diferente de 7
no respeta lo de los tres espacios
cualquier numero teminado en 99 tambien lo revienta
creo que a este paso ninguno va a ganar.

que gane el que tenga menos errores  (ole)

el de ses ... bueno  no sirve.
Título: Concurso De Programacion
Publicado por: sés en 01 de Abril de 2005, 08:51:28 AM
 ¿Alguien puede decirme dónde falla el mío?
Yo lo compilo con MingW (mingw32-gcc -ansi cuadrado.c -o cuadrado.exe) y funciona perfectamente.
Título: Concurso De Programacion
Publicado por: samsaga2 en 01 de Abril de 2005, 08:52:58 AM
 Como podreis observar las matematicas no son lo mio XD. Tuve que hacer dos fors porque no supe "sacar" la matriz (aunque no la veais calculo como si estuviera).

#include <stdio.h>
main(){int _,x,i,j=0,B;scanf("%d",&_);if(_>2&_<=9&&_%2){B=_*_;while(++j<=B){for(x=_/2,i=1;x!=j-1;x=i++%_?(x-x%_+B-_)%B+(x%_+1)%_:(x+_)%B);printf(j%_?"%3d":"%3d\n",i);}}}


No es exactamente el que envie pero es casi el mismo.

Ofrezco un premio al que averigue que significa x=i++%_?(x-x%_+B-_)%B+(x%_+1)%_:(x+_)%B ya ni me acuerdo  :P
Título: Concurso De Programacion
Publicado por: gdl en 01 de Abril de 2005, 08:53:27 AM
 
Cita de: "JuanK"
gdl,
el tuyo se revienta con cualquiera que comience por 7 y sea diferente de 7
cualquier numero teminado en 99 tambien lo revienta

Eso es porque has compilado en arquitectura i386 ¿verdad?  ;)
Prueba en otra arquitectura o con un mejor compilador.



Cita de: "JuanK"
no respeta lo de los tres espacios


Creo recordar que se especificó una separación del tipo

NxxNNxNxx

De hecho, sés y Pogacha también usaron el %-3d...
Título: Concurso De Programacion
Publicado por: samsaga2 en 01 de Abril de 2005, 08:55:24 AM
Cita de: "sés"¿Alguien puede decirme dónde falla el mío?
Yo lo compilo con MingW (mingw32-gcc -ansi cuadrado.c -o cuadrado.exe) y funciona perfectamente.
Supongo que es un fallo del copy&paste pero a la segunda linia les falta el int delante.
Título: Concurso De Programacion
Publicado por: sés en 01 de Abril de 2005, 09:02:26 AM
 Eso solo da un warning y está permitido :P
Título: Concurso De Programacion
Publicado por: sés en 01 de Abril de 2005, 09:05:17 AM
Cita de: "gdl"
Cita de: "JuanK"
gdl,
el tuyo se revienta con cualquiera que comience por 7 y sea diferente de 7
cualquier numero teminado en 99 tambien lo revienta
Eso es porque has compilado en arquitectura i386 ¿verdad?  ;)
Prueba en otra arquitectura o con un mejor compilador.
Yo he compilado con MingW y no pasa lo del 7X, peri si que se vuelve loco si le meto un 99.
Lo de los espacios está bien, justo como dice en las reglas.
Título: Concurso De Programacion
Publicado por: igon en 01 de Abril de 2005, 12:05:17 PM
 Creo que envié otro que ocupaba mas, pero bueno


#include<stdio.h>
j,d,o,e[9][9];
main(i) {
scanf("%d",&d);
for(i=d/2-1,j=d-2;d&1*d>2&9/d&o<d*d;e[++i%d][++j%d]?--i,j-=2:i,e[i%d][j%d]=++o);
for(;o--;printf(o%d?"%-3d":"%-3d\n",e[o%d][o/d]));
}


Título: Concurso De Programacion
Publicado por: nostromo en 01 de Abril de 2005, 12:21:03 PM
 Hay va mi codigo(128bytes contando un 0xA)...



#include<stdio.h>
s,j;main(d){for(scanf("%d",&d);~6&d-3?0:j<d*d;printf("\n%-3d"+(j++%d>0),(s-j%d+d/2)%d*d+s%d+1))s=j%d*2-j/d+d;}


Por cierto, es interesante ver de donde vienen estas formulas: http://mathforum.org/te/exchange/hosted/su...are.OddbyC.html
Creo que deberia haberme puesto a calcular las formulas a mano según la idea del link anterior, simplemente es una rotacion de 45º!!!    <_<

Bueno, que el ganador sea quien sea lo disfrute   (ole)

Un saludo a todos,
Título: Concurso De Programacion
Publicado por: shephiroth en 01 de Abril de 2005, 02:08:03 PM
 Juas no se yo de donde habeis sacado esas expresiones, pero la verdad felicidades a todos xDD

La verdad que habeis ido quitando bytes por todos lados, hasta declarando una variable en el main O_O

Mi codigo no es tan reducido, al final me quede un poco por debajo de los 150 bytes (cosa que al principio me parecio imposible llegar xDD


#include <stdio.h>
i,t,N;
main(){
scanf("%i",&N);
if(N%2&&N>2&&N<10)
for(;t<N*N;){i=t/N+1+t%N*2;t%N?0:puts("");printf("%-3d",1+i%N+(N/2+i-t++%N)%N*N);}
}


Despues de ver vuestros codigos y sin reducciones matematicas, podría quitarme unos 10 bytes faciles, pero weno.....

gracias a todos y felicidades al ganador xDD
Título: Concurso De Programacion
Publicado por: gdl en 01 de Abril de 2005, 04:28:58 PM
 
Cita de: "sés"
Cita de: "gdl"
Cita de: "JuanK"
gdl,
el tuyo se revienta con cualquiera que comience por 7 y sea diferente de 7
cualquier numero teminado en 99 tambien lo revienta
Eso es porque has compilado en arquitectura i386 ¿verdad?  ;)
Prueba en otra arquitectura o con un mejor compilador.
Yo he compilado con MingW y no pasa lo del 7X, peri si que se vuelve loco si le meto un 99.
Lo de los espacios está bien, justo como dice en las reglas.
Si sigues usando la arquitectura i386, seguirá fallando.

Por otra parte, es verdad, sés, que tu código funciona. El problema era el ++i dentro de un argumento a la llamada a printf(). El orden de la evaluación de los parámetros varía entre compiladores (el estándar asume esto).  :)

Por cierto, supongo que no se tendrán en cuenta las limitaciones de las arquitecturas porque en i386 todos los que usen int van a descubrir que su código falla cuando se introduce el número 4294967299. :blink:

Título: Concurso De Programacion
Publicado por: Pogacha en 01 de Abril de 2005, 11:13:17 PM
 Como nadie demostro darse cuenta, replico "lo mio era un cazabobos"  :P y nadie leyó realmente el codigo

i,n;main(){for(scanf ("%d", &n );n>2&n<10&n&in*7+n)%n+i)%n));}

Me parecen muy interesantes los codigos finales ... muy trabajados todos, mis felicitaciones a todos, muchas ideas que no se me hubiesen ocurrido.
Título: Concurso De Programacion
Publicado por: Cronodragón en 02 de Abril de 2005, 12:43:35 AM
 Ups, estaba seguro que Nostromo había hecho algo similar a mí. Bueno, este es mi código de 126 caracteres incluyendo un cambio de línea de 1 caracter:

#include <stdio.h>
main(){char n[99];FILE*f;scanf("%s",&n);if(f=fopen(n,"r")){while(!feof(f)){fgets(n,99,f);printf("%s",n);}}}


Nadie se dió cuenta de que las condiciones del concurso no dicen nada acerca de que no se puedan usar archivos adicionales al .c, y tampoco dicen nada sobre que el programa tenga que desarrollar matemáticamente el cuadrado, simplemente dice que lo muestre en pantalla. :) Así que junto a ese código van 4 archivitos llamados "3", "5", "7" y "9" que tienen el cuadrado pre-diseñado y listo para se lanzado a la consola. Espero que hayan valido esos exámenes en la universidad donde los profesores se pasaban de listos y ponían trampas en los encabezados de los problemas, por lo que te forzaban a leer con cuidado... y sino, fue divertido hacer esa solución válida. Que gane el mejor! :D
Título: Concurso De Programacion
Publicado por: JuanK en 02 de Abril de 2005, 01:08:54 AM
 iNCREIBLE!!!

AJJAJAJAJAJAJA


Y para mi que si cumple con lo pedido, pues en ningun lado dice lo contrario.
(asco)  me siento muy torpe (genial)  
Título: Concurso De Programacion
Publicado por: JuanK en 02 de Abril de 2005, 01:23:04 AM
 Y pensar que hubiese podido quedar aun más pequeño con algo asi como esto::

#include <stdio.h>
n[99];main(){FILE*f;f=fopen(n,"r");for(scanf("%s",&n);f&!feof(f),fgets(n,99,f);printf("%s",n));}


(twist)  (grrr)

114 caracteres
Título: Concurso De Programacion
Publicado por: shephiroth en 02 de Abril de 2005, 05:56:16 AM
 Por poder aun se puede menos xDD


#include <stdio.h>
n[9];main()for(scanf("%s",&n),FILE*f=fopen(n,"r");f&!feof(f);fgets(n,9,f),printf("%s",n));


Son 6 bytes menos xDD

EDITADO:
Juank lo tuyo no rula, haces fopen antes de leer el numero xDD (y el for tienes mal ajustados los ; y las , pero no interfiere en nº de bytes)
Título: Concurso De Programacion
Publicado por: JuanK en 02 de Abril de 2005, 06:10:11 AM
  Y pensar que hubiese podido quedar aun más pequeño con algo asi como esto::

bueno como podras entender no lo habia probado pues lo hice de afan en la oficina y sin opcion de hacer pruebas.
Título: Concurso De Programacion
Publicado por: gdl en 02 de Abril de 2005, 11:25:04 AM
 Siento decirlo, pero el código de cronodragón tampoco cumple las reglas del concurso. De hecho, esas reglas dicen que

Citar• La dimensión del cuadrado mágico será aceptada con la instrucción scanf, acabándose el programa prematuramente, si el valor introducido no es una dimensión permitida.

He compilado y probado el programa de cronodragón y, como dimensión del cuadrado, he puesto

c:\windows\system.ini

Que claramente no es un número impar entre el 3 y el 9. El programa no ha acabado prematuramente, sino que ha impreso una serie de datos por pantalla.

Creo que va a quedarse desierto el concurso como sigamos a este paso.... O_O
Título: Concurso De Programacion
Publicado por: patagon en 02 de Abril de 2005, 12:20:08 PM
Cita de: "Cronodragón"Ups, estaba seguro que Nostromo había hecho algo similar a mí. Bueno, este es mi código de 126 caracteres incluyendo un cambio de línea de 1 caracter:

#include <stdio.h>
main(){char n[99];FILE*f;scanf("%s",&n);if(f=fopen(n,"r")){while(!feof(f)){fgets(n,99,f);printf("%s",n);}}}


Nadie se dió cuenta de que las condiciones del concurso no dicen nada acerca de que no se puedan usar archivos adicionales al .c, y tampoco dicen nada sobre que el programa tenga que desarrollar matemáticamente el cuadrado, simplemente dice que lo muestre en pantalla. :) Así que junto a ese código van 4 archivitos llamados "3", "5", "7" y "9" que tienen el cuadrado pre-diseñado y listo para se lanzado a la consola. Espero que hayan valido esos exámenes en la universidad donde los profesores se pasaban de listos y ponían trampas en los encabezados de los problemas, por lo que te forzaban a leer con cuidado... y sino, fue divertido hacer esa solución válida. Que gane el mejor! :D
La solución de cronodragón es totalmente absurda y evidentemente no será dada por válida.

Siguiendo esta lógica, no se porque no se le ocurrió enviar un ejecutable cualquiera que pidiera los datos, resolviera el problema y lo imprimiera y un .c (de ¿50 Kb?) que simplemente ejecutara el anterior programa.
Título: Concurso De Programacion
Publicado por: fiero en 02 de Abril de 2005, 12:54:06 PM
 Bueno, patagon, no es exactamente lo mismo. El sistema de cronodragón a mi me parece totalmente válido. Muchas veces cuando programamos nos encontramos con la cuestión de poder sustituir ciertos algoritmos que siempre tendrán las mismas salidas, por tablas de datos, para hacerlo más rápido. Otra cuestión es que no cumpla lo del 3,5,7,9. De todas formas por lo que veo no es el más corto.

un saludo

PD: leyendome de nuevo las bases no dice nada de que el programa deba calcular matemáticamente, solo dice que debe mostrar.
Título: Concurso De Programacion
Publicado por: gdl en 02 de Abril de 2005, 01:40:30 PM
 La idea de Cronodragón es muy válida en la programación real: el precálculo. Sin embargo, en este caso tiene los defectillos que comenté antes.
Título: Concurso De Programacion
Publicado por: nostromo en 02 de Abril de 2005, 01:56:27 PM
 
Cita de: "nostromo"
#include<stdio.h>
s,j;main(d){for(scanf("%d",&d);~6&d-3?0:j<d*d;printf("\n%-3d"+(j++%d>0),(s-j%d+d/2)%d*d+s%d+1))s=j%d*2-j/d+d;}


Me acabo de dar cuenta que he metido dos j%d redundantes dentro de la expresion....
deberian ser solo j y hubiera tenido 123 caracteres!!!!   (nooo)  
Título: Concurso De Programacion
Publicado por: gdl en 02 de Abril de 2005, 04:52:54 PM
 Además, nostromo, sobraba el +d en la asignación de la s ya que si hubieras quitado el j%d nunca saldría negativo:

#include<stdio.h>
s,j;main(d){for(scanf("%d",&d);~6&d-3?0:j<d*d;printf("\n%-3d"+(j++%d>0),(s-j+d/2)%d*d+s%d+1))s=j*2-j/d;}


Por cierto, me ha gustado mucho la forma que tienes de ver si los valores son correctos.
Título: Concurso De Programacion
Publicado por: JuanK en 02 de Abril de 2005, 05:18:02 PM
 creo que es muy vada la solucion,
con excepcion de que ha cometido bugs, = que todos los demas.
Título: Concurso De Programacion
Publicado por: manko en 02 de Abril de 2005, 05:30:57 PM
 
Cita de: "Cronodragón"Ups, estaba seguro que Nostromo había hecho algo similar a mí. Bueno, este es mi código de 126 caracteres incluyendo un cambio de línea de 1 caracter:

#include <stdio.h>
main(){char n[99];FILE*f;scanf("%s",&n);if(f=fopen(n,"r")){while(!feof(f)){fgets(n,99,f);printf("%s",n);}}}


Nadie se dió cuenta de que las condiciones del concurso no dicen nada acerca de que no se puedan usar archivos adicionales al .c, y tampoco dicen nada sobre que el programa tenga que desarrollar matemáticamente el cuadrado, simplemente dice que lo muestre en pantalla. :) Así que junto a ese código van 4 archivitos llamados "3", "5", "7" y "9" que tienen el cuadrado pre-diseñado y listo para se lanzado a la consola. Espero que hayan valido esos exámenes en la universidad donde los profesores se pasaban de listos y ponían trampas en los encabezados de los problemas, por lo que te forzaban a leer con cuidado... y sino, fue divertido hacer esa solución válida. Que gane el mejor! :D
No se si lo estais poniendo en tono de risa y yo no lo pillo.

Pero desde luego estas soluciones con archivos adicionales no deben valer, esta claro. Sino no se porque directamente no se mando:

#include"b.h"
main(){c();}

con su correspondiente b.h con el codigo del cuadrado magico en una funcion c(){...}
29 bytes !!!
Título: Concurso De Programacion
Publicado por: manko en 02 de Abril de 2005, 05:32:18 PM
 Por cierto, enhorabuena me han gustado mucho vuestras soluciones!

PD: yo me he quedado en 141 Bytes
Título: Concurso De Programacion
Publicado por: gdl en 02 de Abril de 2005, 05:36:47 PM
 ¡Claro manko! Ahora comprendo aquél de los 22 bytes....
Título: Concurso De Programacion
Publicado por: nostromo en 02 de Abril de 2005, 05:52:22 PM
 
Cita de: "gdl"Además, nostromo, sobraba el +d en la asignación de la s ya que si hubieras quitado el j%d nunca saldría negativo:

#include<stdio.h>
s,j;main(d){for(scanf("%d",&d);~6&d-3?0:j<d*d;printf("\n%-3d"+(j++%d>0),(s-j+d/2)%d*d+s%d+1))s=j*2-j/d;}


Por cierto, me ha gustado mucho la forma que tienes de ver si los valores son correctos.
Sip, una cosa lleva a la otra. Y el caso es que la misma expresión la escribi de varias formas , creo me obsesione tanto con darle vueltas a la expresion que al final se me olvido lo que me acabas de decir; y lo tenia apuntado en alguno de los 10 folios de apuntes que tire a la basura nada más enviar el codigo.   :rolleyes:

Eso si, me alegre de enviarlo porque no veas el tiempo que "perdi" con el tema.

Al principio tenia i
Título: Concurso De Programacion
Publicado por: gdl en 02 de Abril de 2005, 07:45:44 PM
 
Cita de: "nostromo"Al principio tenia i
Una pena que la instrucción SAR de los Intel no esté preparada para desplazamientos mayores de 32 bits y sólo tome los últimos 5 bits del segundo operando. Por esta razón mi código falla en los PCs cuando se pone el 99 (=32*3 + 3). (asco)  
Título: Concurso De Programacion
Publicado por: ZeruGiran en 02 de Abril de 2005, 07:49:19 PM
 Mi codigo de 142 caracteres incluyendo 1 caracter de salto de linea:


#include<stdio.h>
n,x,c;main(){for(scanf("%d",&n);x<99&!(n-3&~6);)c==(n-1+x-x/n*2)%n*n+(n/2+x-x++/n)%n?printf("%-3d%c",x,(++c%n)?0:10),x=0:0;}


Con saltos de linea:


#include<stdio.h>
n,x,c;
main()
{
for(scanf("%d",&n);x<99&!(n-3&~6);)
 c==(n-1+x-x/n*2)%n*n+(n/2+x-x++/n)%n?printf("%-3d%c",x,(++c%n)?0:10),x=0:0;
}


Citar
GDL: Por cierto, supongo que no se tendrán en cuenta las limitaciones de las arquitecturas porque en i386 todos los que usen int van a descubrir que su código falla cuando se introduce el número 4294967299. blink.gif

El mio no fallo. :) Pero parece que perdi de todos modos :(

Saludos.
Título: Concurso De Programacion
Publicado por: ZeruGiran en 02 de Abril de 2005, 08:01:59 PM
 ¿Que dicen la reglas hacerca de la la impresion del resultado?
Algunos codigo dan como resultado algo como:


4  9  2
3  5  7
8  1  6  bash-3.00$


Y otros esto:


4  9  2
3  5  7
8  1  6  
bash-3.00$



Notese el salto de linea despues del 6.

Creo que Nostromo va ganando ¿cierto? :)
Título: Concurso De Programacion
Publicado por: Pogacha en 02 de Abril de 2005, 08:29:21 PM
 Claro:

Archivo cuadrado.c :
#include"a"

Archivo a :
#include<stdio.h>
#include<stdlib.h>
#define f (sizeof(int))

int i,j,k,l,m,*t,*u,*v;
int r(x)int x;{return (rand()/256)%x;}
void p(x,y)int *x,y;{for(i=y;--i;k=x[i],x[i]=x[j],x[j]=k)j=r(i+1);}

void o(n,a,q,d)int n,d,*a,*q;
{
  for(m=r(2)?n:1,t=q,l=n/2,i=n;
      i--&&(i!=l||i--);
      *(t++)=i);
  for(p(q,n-1),q[n-1]=l,u=a,i=j=0;
      i<n*n;
      u[i] =q[j]*m,j++,++i%n||(++j,u+=d),j>=n&&(j-=n));
  for(p(q,n-1),u=a,m=n+1-m,i=0,j=n-1;
      i<n*n;
      u[i]+=q[j]*m,j++,++i%n||(--j,u+=d),j>=n&&(j-=n));
}

void s(n,a,q,d)int n,d,*a,*q;
{
  for(q[1]=3-(*q=r(n)),q[3]=3-(q[2]=1^q[r(2)]),t=a,i=n,m=3*r(2);
      i--;
      t+=d)
  for(j=n;
      j--;
      t++[0]=q[j^(i&m)^(i/2)]);
  for(q[1]=3-(*q=r(n)),q[3]=3-(q[2]=1^q[r(2)]),t=a,i=n,m=3-m;
      i--;
      t+=d)
  for(j=n;
      j--;
      t++[0]+=q[j^(i&m)^(i/2)]*4);
}

void e(n,a,q,d)int n,d,*a,*q;
{
  int h,i,k,l,z,g=n/2;
  void (*m)();
  for((m=g!=4?g%2?o:e:s)(g,a,q,g+d),m(g,a+g,q,g+d),l=(n+d)*g,u=a,i=g;
      i--;
      u+=d)
  for(j=n;
      j--;
      j<g&&(*u+=g*2*g),l[u]=*u+(j<g?-1:3)*g*g,u++);
  for(i=g; i--; q[i]=i<g/2);
  for(h=k=(g+1)/2,v=a; v<a+n; v+=g){
     for(u=v,i=g; i--; u+=g+d){
        if(p(q,g),q[z=g-i-1])
        if(k)k--;
        else
        for(j=g;q[--j]||(q[j]=1,q[z]=0););
        else
        if(k>i)
        for(j=g;!q[--j]||(k--,q[z]=1,q[j]=0););
        if(q[i])
        if(h)h--;
        else
        for(j=g;q[--j]||j==z||(q[j]=1,q[i]=0););
        else
        if(h>i||(g==3&&h&&(k==2||i==z)))
        for(j=g;!q[--j]||j==z||(h--,i==z&&k--,q[i]=1,q[j]=0););
        for(t=q,j=g;j--;u++)
        if(0[t++])z=*u,*u=u[l],u[l]=z;
     }
     for(h=k=g/2-g%2,i=g;i--;q[i]=i<h);
  }
}

int main(c,v)
int c;
char **v;
{
  int n,*a,*b;
  srand(getpid());
  if(c<2 || sscanf(1[v],"%d",&n)!=1 || n<3) n=5;
  if(!((a=(int*)malloc(n*n*f))&&(b=(int*)malloc(n*f))))
     return perror("malloc"),1;
  (n!=4?n%2?o:e:s)(n,a,b,0);
  for(i=0;i<n*n;i++)
     printf("%4d%c",a[i]+1,(i+1)%n?' ':'\n');
  return 0;
}



11 bytes  
Título: Concurso De Programacion
Publicado por: patagon en 02 de Abril de 2005, 08:39:28 PM
 Bueno menos mal que la gente opina, yo estaba flipando con la solución de cronodragon y que nadie dijera nada  :blink:  
Título: Concurso De Programacion
Publicado por: nostromo en 02 de Abril de 2005, 08:45:31 PM
 
Cita de: "ZeruGiran"Creo que Nostromo va ganando ¿cierto? :)
Ojala!!!   :D  
Pero me temo que no, ses y gdl tienen menos caracteres que yo e imagino que hay gente por ahi de la que todabia no sabemos nada.   O_O

Título: Concurso De Programacion
Publicado por: ZeruGiran en 02 de Abril de 2005, 08:53:00 PM
 NOSTROMO:

Por lo que lei:

ses: no cumple la regla de las diagonales.
gdl: tiene problemas con el 99 y 7x
JuanK: tiene problemas con 7x
Cronodragron: suponiendo que sea valido usar archivos externos, aun asi ya se aclaro que puedes meterle como parametro C:/autoexec.bat y saca basura (aunque estoy seguro que lo descalificaran).

Me parece que si vaz ganado, tu code quedo genial :)
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 02 de Abril de 2005, 10:15:21 PM
 borra.me
Título: Concurso De Programacion
Publicado por: sés en 03 de Abril de 2005, 12:10:37 AM
Cita de: "ZeruGiran"ses: no cumple la regla de las diagonales.
¿Por qué no la cumplo? He probado mi código con MingW y funciona perfectamente.

Ahora lo he probado también con Borland y también funciona.

Con Visual C parece que falla (pero no solo las diagonales) y, a mi entender, es por un fallo del compilador. Me explico:

Los parámetros en las llamadas a funciones se meten en la pila de derecha a izq.

La llamada:
 f( 1, 2 );

Debería ser algo como:
 push  2
 push  1
 call f

Dicho de otra forma:2
f( expr1, expr2 )

sería:
 
 push expr2
 
 push expr1
 call f

Visual C  está calculando expr1 (en mi caso ++i%N) antes de evaluar la expresión de la derecha. Eso para mí es un fallo del compilador.

De hecho, si en mi código cambias el printf por esto:
printf((i+1)%N?"%-3d":"%d\n",(i*2-i/N)%N*N+(N/2+i-i/N)%N+1),i++
Funciona perfectamente en Visual C


P.D.: ...¿o será que están mal el resto de compiladores? O.O
Título: Concurso De Programacion
Publicado por: sés en 03 de Abril de 2005, 10:22:42 AM
 Ejem...
Fallo en Visual C

Definitivamente considero que mi código es correcto por que no tiene nada extraño. Es C normal y corriente, y el que un compilador haga cosas raras no lo hace menos válido.

En las reglas tampoco dice que deba funcionar con todos los compiladores. Si uno, como es el caso de Visual C, se hace un lío con una expresión, no es problema del código. Y dado que funciona en más compiladores de los que falla (solo VC)...
Título: Concurso De Programacion
Publicado por: gdl en 03 de Abril de 2005, 11:21:31 AM
 
Cita de: "sés"Ejem...
Fallo en Visual C

Definitivamente considero que mi código es correcto por que no tiene nada extraño. Es C normal y corriente, y el que un compilador haga cosas raras no lo hace menos válido.

En las reglas tampoco dice que deba funcionar con todos los compiladores. Si uno, como es el caso de Visual C, se hace un lío con una expresión, no es problema del código. Y dado que funciona en más compiladores de los que falla (solo VC)...

Vamos a ver.

Una cosa es que se cumpla la norma ANSI y otra que el código sea portable.

La norma ANSI dice en el apartado 6.5.2.2 relativo a las llamadas a funciones, en su párrafo décimo que

Citar10 The order of evaluation of the function designator, the actual arguments, and
subexpressions within the actual arguments is unspecified, but there is a sequence point
before the actual call.

Es decir, que cada compilador puede hacer lo que le de la gana y sigue cumpliendo la norma. ¡Incluso el comportamiento tan extraño del VC! Ya que el párrafo habla no sólo de expresiones sino también de subexpresiones.



Creo que para aclarar las cosas respecto a los fallos, hemos de hacer una clasificación de los mismos. Propongo la siguiente

- Fallos sintácticos: no compila según la norma ANSI.
- Fallos semánticos: existe un fallo en el programa que se puede detectar sin ejecutarlo y basándose en la semántica que da la norma ANSI (tomando un caso favorable si se especifica comportamiento indeterminado).
- Fallos de portabilidad: aparecen cuando se usan características que la norma ANSI deja indefinidas o deliberadamente abiertas.


El caso de sés entra dentro de un fallo de portabilidad ¡¡pero todos los programas tienen fallos de portabilidad!! ¡¡La norma deja indefinido el tamaño de los tipos básicos!! Bastará compilar cualquier solución del concurso para (por decir algo) un PIC16F876 que es un micro de 8 bits e introducir como dimension 259 = 256 + 3. Como es de 8 bits, no puede guardar el 259 y se queda con el 3... que cuela como válido. El programa habría aceptado un 259 y no ha acabado prematuramente. (Y si con 8 bits funcionase... buscamos micros de 4 bits que también los hay :P )

Es más, las reglas dicen que el programa siga la norma ANSI, no que sea portable.

No se han dado casos de fallos sintácticos, pero sí de fallos semánticos. Por ejemplo, el caso de Cronodragón. Es un programa que vuelca por pantalla el fichero que se le introduzca. Sin ejecutar el programa se puede decir que no se está haciendo la comprobación de que se haya introducido un número impar entre 3 y 9.

Creo que esta forma de juzgar los programas sin compilarlos ni ejecutarlos en una plataforma específica debe ser la que se use. A partir de ahora no valdrá decir "el programa falla porque lo compilé con un GENC en un Spectrum 16K y no va". Habrá que decir "el programa falla porque la guarda del bucle es falsa cuando la variable a es 13".
Título: Concurso De Programacion
Publicado por: sés en 03 de Abril de 2005, 01:06:38 PM
 Bueno, a eso es justo a lo que voy. Yo considero mi programa válido porque en ningún momento se especifica que deba funcionar en tal o cual compilador.

Otra razón por la que lo considero válido es porque solo ha fallado en un compilador. Que mucha gente lo utilice no significa nada. También mucha gente usa GCC o MingW y en ese sí funciona.
Título: Concurso De Programacion
Publicado por: sés en 03 de Abril de 2005, 03:06:04 PM
 Probado también con Digital Mars C/C++ Compiler Version 8.42.
Parece que solo va a fallar con Visual C :P


-= EDIT =-
También funciona con Open Watcom 1.3
Título: Concurso De Programacion
Publicado por: Mars Attacks en 03 de Abril de 2005, 03:12:33 PM
 Pogacha, te falta el include obligatorio ;)
Título: Concurso De Programacion
Publicado por: Pogacha en 03 de Abril de 2005, 05:03:10 PM
 En realidad no participé y no se las reglas finales, algunos retoques y es la solucion optima.-
Saludos
Título: Concurso De Programacion
Publicado por: JuanK en 05 de Abril de 2005, 03:30:06 PM
 Bueno el hecho de que sea aequitectura I386, no tiene nada que ver
todo es cuestion del compilador que es qel que a la final estructura el codigo de mauina como mejor le convenga.

Para proximos concursos creo que seria necesario imporner el uso de un compilador determinado para evitar estos incovenientes.


el io lo probe en gcc para MINIX y funciona y no se revienta pro nada del mundo!!  (genial)


jejejeje es broma , pero podria pasar
Título: Concurso De Programacion
Publicado por: sés en 07 de Abril de 2005, 03:46:38 PM
 Ganador del Concurso MQO

(uoh)  
Título: Concurso De Programacion
Publicado por: CoLSoN2 en 07 de Abril de 2005, 03:49:09 PM
 LOL

Felicidades :D
Título: Concurso De Programacion
Publicado por: zupervaca en 07 de Abril de 2005, 04:06:38 PM
 la verdad es que es la cosa mas ilegible que he visto, pero ole tus webs por ganar y tener un hijo asi, felicidades  (ole)  
Título: Concurso De Programacion
Publicado por: Haddd en 07 de Abril de 2005, 04:07:48 PM
 Enhorabuena  (ole)  
Título: Concurso De Programacion
Publicado por: JuanK en 07 de Abril de 2005, 04:08:42 PM
 Brillante ses  (ole)

Recien entiendo lo corto de tu solucion, te felicito!!!  (ole)

me has enseñado mucho con eso que hiciste en el printf, la verdad no se me haia ocurrido  :)

Y como hallaste ese algoritmo tan corto para la solucion?  (uoh)  (genial)  
Título: Concurso De Programacion
Publicado por: _Grey en 07 de Abril de 2005, 04:31:36 PM
 MIERDA! ! ! !

digo..... felicidades.

joer, y con solo 2 variables......
Título: Concurso De Programacion
Publicado por: vincent en 07 de Abril de 2005, 04:33:41 PM
 Felicidades tio!  (ole)  
Título: Concurso De Programacion
Publicado por: sés en 07 de Abril de 2005, 04:35:07 PM
 Asias.

Cita de: "JuanK"Y como hallaste ese algoritmo tan corto para la solucion?
Cuando llegue a casa (sigo en el curro)  lo cuento para el que tenga curiosidad. La verdad es que es muy simple :rolleyes:
Título: Concurso De Programacion
Publicado por: Sacrifai en 07 de Abril de 2005, 04:36:37 PM
 Que maquina  :)  
Título: Concurso De Programacion
Publicado por: BeRSeRKeR en 07 de Abril de 2005, 04:37:41 PM
 Congratulations! :)
Título: Concurso De Programacion
Publicado por: Pogacha en 07 de Abril de 2005, 04:46:44 PM
  (ole)  Felicitaciones  (ole)
Para descargar su ira, incito al resto de los participantes a picar los ojos de sés o al menos de su avatar
Saludos y felicitaciones nuevamente.
Título: Concurso De Programacion
Publicado por: sés en 07 de Abril de 2005, 04:49:54 PM
 
Cita de: "Pogacha"Para descargar su ira, incito al resto de los participantes a picar los ojos de sés o al menos de su avatar
(ses) crueles...
Título: Concurso De Programacion
Publicado por: ZeruGiran en 07 de Abril de 2005, 05:02:13 PM
 :blink:  Maldito Sés  :angry:

Falicidades   :D   (ole)  
Título: Concurso De Programacion
Publicado por: fiero en 07 de Abril de 2005, 05:02:47 PM
 Coño sés! ¿Tu avatar siempre a sido un swf? emm, no me preguntes como lo acabo de averiguar....

un saludo
Título: Concurso De Programacion
Publicado por: zwiTTeR en 07 de Abril de 2005, 05:07:08 PM
 jejejej, ses, eres un crack :-D , enhorabuena machote xD
Título: Concurso De Programacion
Publicado por: sés en 07 de Abril de 2005, 05:11:54 PM
Cita de: "fiero"Coño sés! ¿Tu avatar siempre a sido un swf? emm, no me preguntes como lo acabo de averiguar....
Ya... no me lo digas... o.+
Título: Concurso De Programacion
Publicado por: gdl en 07 de Abril de 2005, 05:55:54 PM
 Machote, machote ;)
Título: Concurso De Programacion
Publicado por: MA]Mestre en 07 de Abril de 2005, 06:45:37 PM
 Felicidades  B)
Título: Concurso De Programacion
Publicado por: nostromo en 07 de Abril de 2005, 07:29:10 PM
 Felicidades ses  (ole)

Título: Concurso De Programacion
Publicado por: Pogacha en 07 de Abril de 2005, 07:36:55 PM
Cita de: "fiero"Coño sés! ¿Tu avatar siempre a sido un swf? emm, no me preguntes como lo acabo de averiguar....

un saludo
Y si me enojo con algun reply lo pongo en baja calidad!!!
Título: Concurso De Programacion
Publicado por: Mars Attacks en 07 de Abril de 2005, 09:01:09 PM
 Yo le agrando el ojo y luego lo pincho  :D

¡Enhorabuena, maestro!  (ole)  (ole)  (ole)  
Título: Concurso De Programacion
Publicado por: Juan Mellado en 08 de Abril de 2005, 09:17:02 PM
 No suelo postear mucho, y menos en offtopic, pero ...

Hoy me han tocado mucho la moral.

Sacado del foro del concurso:

Citar

(quote="Admin")Hola mel,

Comprendo tus comentarios, te he explicado de forma privada, el pq de que no ganarás el consurso, ha sido una lástima, la verda :cry:

Un saludo.(/quote)

Resumiendo: no gano porque he utilizado una cuenta de Hotmail para enviar el programa.

!-F-A-B-U-L-O-S-O-!

Pues nada, tomaremos nota para la próxima.

Enhorabuena al ganador, y a MQO por organizar el concurso.

Saludos

Título: Concurso De Programacion
Publicado por: sés en 08 de Abril de 2005, 09:40:29 PM
 (ses) Mi no entender nada.
Título: Concurso De Programacion
Publicado por: zupervaca en 08 de Abril de 2005, 10:40:14 PM
Cita de: "Juan Mellado"No suelo postear mucho, y menos en offtopic, pero ...

Hoy me han tocado mucho la moral.

Sacado del foro del concurso:

Citar

(quote="Admin")Hola mel,

Comprendo tus comentarios, te he explicado de forma privada, el pq de que no ganarás el consurso, ha sido una lástima, la verda :cry:

Un saludo.(/quote)

Resumiendo: no gano porque he utilizado una cuenta de Hotmail para enviar el programa.

!-F-A-B-U-L-O-S-O-!

Pues nada, tomaremos nota para la próxima.

Enhorabuena al ganador, y a MQO por organizar el concurso.

Saludos

postea tu programa y asi pones una prueba firme ya que un simple texto no corrabora los hechos que te han pasado

saludos y espero que se solucione el tema
Título: Concurso De Programacion
Publicado por: igon en 08 de Abril de 2005, 11:14:09 PM
 Pues, si, que aclaren esa curiosidad....

Felicidades ses :P

Pasando la N a main y con la otra validacion que usaron aun se le quitan 2 caracteres mas  :lol:

como llegaron a esto ¿? ~6&N-3  y yo que pensaba que hacer karnaugh no valdria para nada, habra
que ver los apuntes que ha hecho la gente jejejeje


i;main(N){for(scanf("%d",&N);!(~6&N-3)&i<N*N;printf(++i%N?"%-3d":"%d\n",(i*2-i/N)%N*N+(N/2+i-i/N)%N+1));}
Título: Concurso De Programacion
Publicado por: nostromo en 09 de Abril de 2005, 02:37:39 AM
 
Cita de: "igon"como llegaron a esto ¿? ~6&N-3  y yo que pensaba que hacer karnaugh no valdria para nada, habra
que ver los apuntes que ha hecho la gente jejejeje
llegue a eso por "casualidad" probando cosas en papel...

resulta que tenemos que aceptar solo 3 5 7 y 9 .... bien, la "casualidad" es que si restamos 3 a N (es decir N-3) tenemos que los 4 numeros anteriores en binario serian:
00000  (3-3)
00010  (5-3)
00100  (7-3)
00110  (9-3)
43210  <- posicion  

con lo que puedes ver que los 4 numeros que buscamos estan codificados en 2 bits (en la posicion 1 y 2), y con esto sabemos que si se encuentra un 1 en una posicion distinta de la 1 o la 2 el numero(dimension) sera incorrecto.

Con todo esto el ~6 ( NOT 000110 )  es igual a ...1111001   y haciendo AND con el N-3  sabemos si el numero es falso....

Título: Concurso De Programacion
Publicado por: shephiroth en 09 de Abril de 2005, 10:30:40 AM
 Yo lo siento ses, pero el admin se contradice. He querido postear en ls foros del concurso pero no me envia el correo de la clave >_< asi q respondo aqui:

Cita de: ""Admin en Sab Abr 09"
Bueno, llegados a este punto, nos vemos obligados a dar las explicaciones pertinentes...

Primero:
Las bases del concurso especifican claramente que el ganador es quien entrega el fiechero *.c con menos bytes.

Segundo:
Las entregas han sido recogidas todas con ms outlook por envio directo vuestro.

Tercero:
Después de recoger todos los archivos llegados, se han ordenado por tamaño. De esto se obtiene.

sés 125bytes
gdl 127bytes
mel 127bytes

Sopresa nuestra cuando mel, teniendo un código de 123c, su fichero ocupa 127bytes.

Después de examinarlo, encontramos un "Enter" al final del código, y que el "Enter" entre el "include" y la "main", esta formado por chr(13)+chr(10).

Conclusiones:
Ciñendonos a las reglas, sés es el ganador.

Nota personal:
Desconozco como funcionan las cuentas de hotmail, nuestra resposibilidad empieza en cuanto recibimos los códigos y aquí todos han recibido el mismo trato.

Cita de: ""Admin en Mie Mar 30"
Si, tranqulo, se valora el programador mas 'minimalista', pues es el espiritu del concurso  Olvidaros de temas de saltos de linea finales de fichero etc...

Pos menos mal q tenian el programa preparado e iva a mirar con lupa todos los posibles ganadores....

Yo no digo que no le haya metido tiempo, pero creo q es de sabios rectificar.....bajo los datos que dio ni la linea final y su enter solo cuenta 1, por lo q serian 124 bytes.........en el caso de gdl no se como quedaria, en tu caso ses creo q te lei que habias corregido lo del enter, asi q no se que decir........
Título: Concurso De Programacion
Publicado por: sés en 09 de Abril de 2005, 10:46:58 AM
 Ya que pones el mensaje del Admin, pon el mensaje al que responde:
CitarSupongo que ese programa contará 1byte/salto de línea, ¿no? Por que eso si que debe contar. No es lo mismo el que necesite 3 saltos de línea que el que solo necesite uno.

127 bytes, incluyendo 2 saltos de línea de 2 bytes.
Si se cuenta cada salto de línea como 1 byte, eso serían 125 bytes. O sea, lo mismo que el mío.
Título: Concurso De Programacion
Publicado por: Juan Mellado en 09 de Abril de 2005, 11:11:04 AM
Dejadlo ya chicos.

Yo lo único que quería saber era qué había pasado con mi programa.

Mi fichero .c ocupa 124 bytes (= 123c + 1 LF). El problema está en que ellos han recibido un fichero de 127 bytes. Los 3 bytes "extra" los ha metido Hotmail al enviar el fichero. ¡Ha añadido los retornos de carro y saltos de línea que yo quité!

Ya lo dije en mi primer post del foro del concurso, y lo repito ahora: "No quiero polémicas, sólo averiguar que ha pasado con mi programa".

Ya lo he averiguado.

Saludos
Título: Concurso De Programacion
Publicado por: zupervaca en 09 de Abril de 2005, 11:26:44 AM
 pero enviaste un archivo adjunto o lo enviste directamente por correo?
Título: Concurso De Programacion
Publicado por: Juan Mellado en 09 de Abril de 2005, 11:29:10 AM
Fichero adjunto, como Dios manda.
Título: Concurso De Programacion
Publicado por: shephiroth en 09 de Abril de 2005, 12:24:25 PM
 Ses, puse ese quote pq especificaba liinea de fin de fichero. Si por medio se tiene mas de un enter, pues 1 byte cada uno, pero el de final de fichero ya dejo claro como se ve en el quote que no se contaría.

De todos modos esto me va a enseñar una cosa. Si quiero enviar cosas por correo mejor meterlas en un zip/rar xDD
Título: Concurso De Programacion
Publicado por: zupervaca en 09 de Abril de 2005, 01:02:02 PM
Cita de: "Juan Mellado"Fichero adjunto, como Dios manda.
no es por crear polemica ni nada, pero no creo posible que hotmail agregue un retorno de carro a un archivo adjunto, si fuera al mensaje en si pues me lo creeria, pero a un archivo adjunto ... no se

lo mejor es que pongas tu programa y asi lo dejas claro de una vez que el motivo fue el envio de hotmail, por que yo lo veo claro del todo

saludos

pd: ¿eran numeros entre 3 al 9 o los impares entre 3 al 9?
Título: Concurso De Programacion
Publicado por: igon en 09 de Abril de 2005, 01:40:03 PM
Cita de: "nostromo"
Cita de: "igon"como llegaron a esto ¿? ~6&N-3  y yo que pensaba que hacer karnaugh no valdria para nada, habra
que ver los apuntes que ha hecho la gente jejejeje
llegue a eso por "casualidad" probando cosas en papel...

resulta que tenemos que aceptar solo 3 5 7 y 9 .... bien, la "casualidad" es que si restamos 3 a N (es decir N-3) tenemos que los 4 numeros anteriores en binario serian:
00000  (3-3)
00010  (5-3)
00100  (7-3)
00110  (9-3)
43210  <- posicion  

con lo que puedes ver que los 4 numeros que buscamos estan codificados en 2 bits (en la posicion 1 y 2), y con esto sabemos que si se encuentra un 1 en una posicion distinta de la 1 o la 2 el numero(dimension) sera incorrecto.

Con todo esto el ~6 ( NOT 000110 )  es igual a ...1111001   y haciendo AND con el N-3  sabemos si el numero es falso....
Muy buena la explicacion :D  tnks

Respecto esto de que si retorno de carro o no....en mi opinion es lo de menos, a mi quien
gane o deje de ganar me importa poco........

Pero yo opino que un criterio de elegir ganador es ver los codigos uno por uno ( que son bien pequeños )
y eliminar los espacios, retornos y tal........

Si hay que ceñirse al criterio de ordenación de outlook y pasarle un simple bat que compile
y pruebe unas cuantas entradas, no entiendo como se necesita 1 semana de seleccion

Saludos
Título: Concurso De Programacion
Publicado por: seryu en 09 de Abril de 2005, 01:40:23 PM
 La proxima vez no deberian ser tan cabrones y contar solo los caracteres del codigo, para dejarse de la tonteria de los saltos de pagina, y en general concretar mas las reglas. Al final en este tipo de concurso siempre pasan estas cosas, las normas no se preveen (siempre es dificil controlar todo) y alguien sale descontento.

Cosas asi hacen que mucha gente deje de concursar.

En cualquier caso felicidades a los 3, os habeis currado un codigo ilegible, y fantastico  :D  
Título: Concurso De Programacion
Publicado por: Zaelsius en 09 de Abril de 2005, 02:14:34 PM
 No he seguido el hilo, pero si no se trata de un iPod, da igual quien haya ganado :lol:  :P  
Título: Concurso De Programacion
Publicado por: JuanK en 09 de Abril de 2005, 07:34:55 PM
 jajajaja
Ahora si me les puedo reir en la cara a todos los que me diejeron que estaba peleando por estupideces con eso del retorno de CR y LF...
(twist) IDIOTAS.

jajajajajajjaja

que tontos .. lastima lo de la ignorancia en algunos de los participantes pero sobre todo que lastima la ignorancia por parte del administrador que no sabe ni que es lo que promete ni lo que dice.  y segun parece ni sabe como funciona un mail server :angry:

Lo peor de todo es que nisiquiera se tomo el trabajo de revisar el solo codigo como lo habia dicho,

No es nada en contra de ses, pues se merece el premio,  pero lo cierto es que si las cosas han sido como se han mostrado, entonces se ha cometido una injusticia a la hora de entregar el premio. (asco)  
Título: Concurso De Programacion
Publicado por: MA]Mestre en 10 de Abril de 2005, 03:03:43 PM
  :ph34r:

El concurso se ha hecho con buena fé. Y os puedo asegurar que no hay ningun tipo de intereres en que gane uno o otro. Dicho esto, todos estamos sujeto a criticas, pero algunos comentarios o calificativos pasan de la ralla. Y más con una iniciativa, a mi parecer, bonita como esta.

Sería bueno tb, que cada uno mirara hacia él, y reflexionar si su comportamiento durante y después del concurso fue el más correcto, en el foro de mqo como en paralelos.

Como dice seryu, "es dificil controlarlo todo", y ganara quien ganara, la polémica estaba servida. No entiendo de "mail server", pero "flipo" si en un mensaje de hotmail agrega un enter en los archivos que adjunta. Y "flipo" más, si retoca los enters entre el código. <_< , i más cuando otros concursantes han adjuntado archivo.c desde cuentas hotmail.

Hasta que tarden una semana en anunciar el ganador os parece mal ? si no lo han echo antes no sera pq tienen una pata encima de la otra, la gente no vive del aire. Que problema hay en esperar unos dias a el ganador ?  que alguien me lo explique.

A todo esto, el viernes me entregaron las llaves de la ciudad para organizar el siguiente concurso ( y entregar el premio de este ). Quereis hacer algo constructivo ? Pasaros por el foro, registraros y postear sobre como os gustaria que fuera el siguiente concurso. (ole)

Un saludo,
en especial a Sés y a Juan Mellado.
Título: Concurso De Programacion
Publicado por: BeRSeRKeR en 10 de Abril de 2005, 03:16:03 PM
 Cursiosamente hoy Haddd me ha pasado la actualización de un archivo del motor C# (a pelo, sin comprimirlo) a mi cuenta de hotmail y mirad el resultado (un fragmento):

#region Using directives

using System;
using System.Collections;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

using Haddd.Physics;
using Haddd.Core;
using Haddd.Scene;
using Haddd.HMath;
using Haddd.HMath.Geometry;
using Haddd.AI;

#endregion


Como podéis ver, se han añadido 3 caracteres al principio del archivo sin venir a cuento... :D

Saludos.
Título: Concurso De Programacion
Publicado por: Juan Mellado en 10 de Abril de 2005, 04:23:39 PM
 Por alusiones:

Cita de: "MAMestre"]... pero "flipo" si en un mensaje de hotmail agrega un enter en los archivos que adjunta. Y "flipo" más, si retoca los enters entre el código ...

Si no fuera porque tengo claro que no es tu intención, diría que estás dudando de mi palabra. Por favor, mantengámonos dentro del buen clima de entendimiento y camaradería que siempre ha reinado en estos foros. Y otra cosa, en vez de "flipar", podrías tomarte la molestia de probarlo. (Mi configuración: XP SP2, Firefox 1.0.2, Hotmail)

Esta es una de las pocas páginas que visito a diario. Y aunque no aporte mucho con mis comentarios, ya que casi nunca posteo, no me gustaría que se crearán tiranteces por mi culpa. ¡Buen rollo, por favor!

Y lo repetiré una vez más: No quería generar polémica, sólo averiguar que había pasado con mi código ¡Es que no lo entendía! Y me quedé de piedra cuando me comunicaron que el fichero que habían recibido tenía más bytes de la cuenta.

¿Lo dejamos ya?

Saludos a todos
Título: Concurso De Programacion
Publicado por: JuanK en 10 de Abril de 2005, 05:38:58 PM
 Bueno eso si
es cierto que el concurso ha sido hecho de muy buena fe...

asi que pido disculpas por mis palabra anteriores, y mejor invito a todos los participantes y organizadores del concurso a que aprendamos de los errores que hemos cometido en este para cada vez hacer mejores concursos.
Estos concursos son una buena iniciativa y lo ideal seria promover como bien se ha dico.. un ambiente de camaraderia.
Título: Concurso De Programacion
Publicado por: MA]Mestre en 10 de Abril de 2005, 05:58:54 PM
 
Cita de: "Juan Mellado"Si no fuera porque tengo claro que no es tu intención, diría que estás dudando de mi palabra.
Pues ten clara mi intención, ni yo, ni el admin/s del mqo "nunca ha dudado de tu palabra".
Dicho esto, no quita, que "flipe" con el comportamiento del Hotmail. Berserker puso tb una muestra de ello.

Un saludo a todos.
Título: Concurso De Programacion
Publicado por: Mars Attacks en 10 de Abril de 2005, 09:00:26 PM
 Bien, pues lo mejor para la próxima es que se adjunte un MD5 del programa, para que así podáis aseguraros de que lo recibís tal y como os lo envían. Tan fácil como eso. Un saludo :)

Yo también flipo, pero realmente la culpa es de Juan por usar el correo de Hotmail. Aún te pasa poco XD  (twist)
Título: Concurso De Programacion
Publicado por: fiero en 10 de Abril de 2005, 10:12:13 PM
 Hombre... antes de proponer camaraderia y tal, lo mejor es medir las palabras antes de escribirlas. Lo digo por tí JuanK, que está muy bien pedir disculpas, pero mejor es no tener que pedirlas... (Nunca se me ocurriria escribir la palabra idiotas en un foro, ...ups... la acabo de escribir)

un saludo
Título: Concurso De Programacion
Publicado por: JuanK en 10 de Abril de 2005, 10:21:38 PM
 podrias tener razon.. pero lo cierto es que aunque dije las cosas con mucha rabia... tenia razon al decirlas...
mas rabia aun cuando fui la persona qua mas di pelea por lo de los retornos carro... y me tuve que aguantas varias intervenciones bastante 'cerradas' de algunas personas.. que ya cada cual sabra quien fue.

De todas formas me ratifico con lo de las disculpas y con mis mejores deseos para que todos aprendan de aca y sean mas precisos lo organizadores y mas cuidados los participantes.
Título: Concurso De Programacion
Publicado por: zupervaca en 11 de Abril de 2005, 11:59:08 AM
 yo me he mandado un archivo de texto a mi propio correo y a otro y esta impecable, hotmail no lo ha retocado

saludos
Título: Concurso De Programacion
Publicado por: Pogacha en 12 de Abril de 2005, 04:44:22 PM
 Me parece claro que si el objetivo era reducir el tamaño del archivo, que cada uno se encargue de sus retornos de carro, lo que me parece que faltó, seria una confirmación cuando se recibe, o sea cuando el archivo se recibe te tendrian que responder se ha recibido un archivo de xxx bytes y tal archivo cumple con las normas y compila en ansi C con tal compilador, la evaluación del resultado sera por medio de tal compilador el dia tal ... No creo que esto se halla podido preveer pero bueno, se sabe para la proxima ...

Saludos