Aiuto sull'ideazione di un algoritmo

di il
6 risposte

Aiuto sull'ideazione di un algoritmo

Salve a tutti, sto avendo un problema che può essere più di matematica che di programmazione. L'esercizio è:

Avendo un numero casuale > di 16 N, trovare il numero M = 2^(X-1)
giocatori, dove 2^X è la potenza di 2 più vicina ma strettamente minore di N.
? Esempio: se N = 456, la potenza di 2 più vicina ma strettamente minore (2^X) è 256 (2^8), quindi
il numero di giocatori rimanenti dopo la prima fase dovrà essere M = 2^7 = 128.
? Esempio: se N = 16, la potenza di 2 più vicina ma strettamente minore è 8 (2^3), quindi il
numero di giocatori rimanenti dopo la prima fase dovrà essere M = 2^2 = 4.
? Esempio: se N = 21, la potenza di 2 più vicina ma strettamente minore è 16 (2^4), quindi il
numero di giocatori rimanenti dopo la prima fase dovrà essere M = 2^3 = 8.
Gli N giocatori verranno raggruppati in M gruppi generati casualmente (le dimensioni dei gruppi possono
differire tra loro di una unità al massimo).

Il mio problema è che non riesco a capire come dividere il numero N in M gruppi senza che alcuni giocatori vengano esclusi. Sarebbe semplice se non fosse che i gruppi non possono differire tra loro di una unità.
Per favore aiutatemi, grazie mille.

6 Risposte

  • Re: Aiuto sull'ideazione di un algoritmo

    Dato D = N / M (intero),

    sono (N-D*M) gruppi da (D+1) persone e ((D+1)*M-N) gruppi da D persone
  • Re: Aiuto sull'ideazione di un algoritmo

    Ma i gruppi possono avere 1 o 2 giocatori per come è posto o sbaglio? Cioè se hai 31 giocatori devi dividerli in 16 gruppi?
  • Re: Aiuto sull'ideazione di un algoritmo

    Alexv ha scritto:


    Ma i gruppi possono avere 1 o 2 giocatori per come è posto o sbaglio? Cioè se hai 31 giocatori devi dividerli in 16 gruppi?
    Ogni gruppo deve avere almeno 2 giocatori (non è specificato ma dato che in ogni gruppo ci sarà una sfida, un giocatore da solo non avrebbe senso)
  • Re: Aiuto sull'ideazione di un algoritmo

    Weierstrass ha scritto:


    Dato D = N / M (intero),

    sono (N-D*M) gruppi da (D+1) persone e ((D+1)*M-N) gruppi da D persone
    Grazie mille! Per curiosità, è un algoritmo già conosciuto o sei riuscito ad idearlo da zero?
  • Re: Aiuto sull'ideazione di un algoritmo

    Se io voglio M gruppi omogenei, i loro elementi devono per forza essere D=N/M: il resto della divisione è minore di M, quindi sicuramente riesco a creare gruppi da D e (D+1) elementi.
    Per il resto, basta impostare un sistema lineare con le due condizioni date (il totale dei gruppi e il totale degli elementi)
  • Re: Aiuto sull'ideazione di un algoritmo

    Detti Q=N\M e R=N%M, si deduce che R gruppi avranno Q+1 giocatori e i restati M-R ne avranno Q.
Devi accedere o registrarti per scrivere nel forum
6 risposte