Blogia
Blog de Ibercivis

Preparando los sorteos.

Hoy termina la fase de concurso. En los proximos dias se resolveran las reclamaciones y se asignaran numeros para el sorteo. La forma de asignar numeros sera el siguiente programita. Una vez ejecutado, comunicaremos publicamente y personalmente los numeros asignados para cada sorteo. Todo esto se anunciara en la web corporativa, aqui lo que os pongo es el codigo de reparto para que os hagais a la idea y aviseis si veis algun fallo Una salvedad: los comentarios dicen "crédito" pero como caracter general, como podrian ser "derechos", "votos", o en este caso horas y minutos de cpu.

#include
#include

// Se aplica la ley D’Hont para repartir NB boletos entre NP participantes
// atendiendo al número de créditos nc[].
// Se consideran todos lo cocientes nc[i]/n, con n natural, y se van asignando
// créditos por orden de cociente decreciente. En caso de cocientes iguales
// se da prioridad al que tiene un número de créditos mayor, y si hubiera
// coincidencia al que esté primero en lista.

#define NB 100000   // número de boletos
#define NP 10      // número de participantes

int nc[NP]; // número de créditos de cada participante
int nb[NP]; // número de boletos para cada participante

int main(void)
{
  int i,j,jmax,sum;
  double r,rmax;

  FILE *Finput;

  if ((Finput=fopen("lista.txt","rt"))==NULL){
    printf("No existe lista.txtn");
    exit(1);
  }

  for (i=0;i
    if (fscanf(Finput,"%d",&nc[i])!=1){
      printf("Sólo hay %d números en la lista de créditosn",i);
      exit(1);
    }
    nb[i]=0;
  }
 
  for (i=1;i<=NB;i++){
    rmax=0;
    jmax=0;
    for (j=0;j
      r=nc[j]/(nb[j]+1.);
      if (r>rmax || (r==rmax && (nc[j]>nc[jmax]))) {
    rmax=r;
    jmax=j;
      }
    }
    nb[jmax]++;
#if (NB<=10) // para debug
    printf("%2d %f=%d/%dn",jmax,rmax,nc[jmax],nb[jmax]);
#endif
  }
  sum=0;
  printf("Participante créditos  boletos     rangon");
  for (j=0;j
    if (nb[j])
      printf("%6d %13d %8d    %04d-%04dn",
         j+1,nc[j],nb[j],sum,sum+nb[j]-1);

    sum+=nb[j]; 
  }
  return 0;
}

9 comentarios

Alejandro Rivero -

Es cierto:

At the end of the contest, top ten participans of the list will be selected and will participate in the drawing of the laptop. The drawing will be proportional to the the valid credits accumulated in the period of time of the contest.

(y lo mismo en castellano)

Me temo que al poner el parrafito en este post diciendo que la ley de hont se puede aplicar a cualquier credito generico, votos, tiempo etc hemos inducido al error. Ya lo estamos corrigiendo. Mas explicacion en el siguiente post.

Cazamarcianos -

Hola,

En el premio de HP se ha asignado los ticket proporcional al tiempo de CPU y no a los creditos como poneis en las bases del concurso o por lo menos yo lo interprete asi.

Un saludo
Jose

Cazamarcianos -

Hola,

Una duda fuera del tema del concuso.

He detectado que hay varios ordenadores que entre los dias 25 y 29 han generado una cantidad muy grande de puntos que no cuadran con el potencia de dichas maquinas.
Todas han procesado miles de tareas de neurosim cada una en 2 minutos.
He puesto un pos en el foro de Canal@boinc con los detalles.
http://www.canalboinc.com/modules/newbb/viewtopic.php?topic_id=1359&forum=198&post_id=13064#forumpost13064

Si podeis investigarlo, gracias y un saludo.
Jose

jotaerre -

Bueno, ya hemos realizado las penalizaciones que hemos considerado oportunas.

Recordad, además, que una persona sólo puede optar a un premio, en caso de estar primero en varias clasificaciones, se elige un premio, y se dejan los demás para el siguiente de la clasificación. Podéis mirarlo en las bases.

chemaris -

+1

En mi opinión los usuarios que han sido penalizados reiteradamente, por ejemplo mas de 5 veces deberían ser descalificados o recibir una penalizacion mas severa

Molondro -

Coincido con Álvaro, lo de éstos dos ha sido descarado.

Álvaro -

Plataforma de descalificación de algspd y GERARDO GONZALO ya. No podíais meter un pequeño bug para que a estos dos no les tocara nada por tramposos. Algspd se va a llevar el premio ibercaja y el de la diputación así por el morro. Por lo menos que no le caigan el Hewlett-Packard y el del ayuntamiento de Zaragoza por sorteo.

¡¡Qué gente!! Se deben de creer muy listos por hacer trampas, como si los demás no supieramos hacerlas.

Teledhil -

Vale, ya veo que, por lo que sea, en esta página no puedo ver los "barra_n"

Teledhil -

A primera vista el primer bucle for está incompleto, falta indicar un par de parámetros. Y lo mismo pasa con el 3º y 4º for.

Y aunque igual es cosa de mi navegador, no veo "n" en los printf, solo veo "n"

:P