Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Concurso De Programacion

Iniciado por MA]Mestre, 09 de Marzo de 2005, 04:06:21 PM

« anterior - próximo »

ethernet

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.

¿?


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.

CoLSoN2

 Osea zupervaca que has metido la gamba por los cuatro costados XD
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

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  

ZeruGiran

 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. :)  

igon

 Menudos estais hechos :P

con un for si, pero me ocupa mas :(

y... sin matriz ¿? un simple array ??

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


ZeruGiran

 Ni matriz, ni array, ni nada de memoria reservada.
B)

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

:D

fiero

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
www.videopanoramas.com Videopanoramas 3D player

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...

samsaga2

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.

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.

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......

JuanK

 
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  ;)

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:  

samsaga2

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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.