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 »

sés

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.
Soy indeciso... ¿o no?

fiero

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

JuanK

 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.

sés

 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 )
 );
}
Soy indeciso... ¿o no?

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?

Pogacha

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

MA]Mestre

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


gdl

 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?

MA]Mestre

 Es una buena idea, se lo comentare a ver que opinan...

JuanK

 
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.

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.
Soy indeciso... ¿o no?

samsaga2

 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

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.



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

samsaga2

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.

sés

 Eso solo da un warning y está permitido :P
Soy indeciso... ¿o no?






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.