[Esercizio] Il Bagno degli Uomini

« Older   Newer »
 
  Share  
.
  1. Guglielmoqwerty
     
    .

    User deleted


    Come molti sanno i bagni degli uomini sono dotati dei orinatoi a parete. Inoltre gli uomini sono molto territoriali (o timidi, scegliete la variante che preferite) e non possono sopportare di utilizzare un orinatoio se quello vicino è occupato e, se hanno la possibilità di scegliere un bagno scelgono quello più distante possibile dagli altri. Se esistono più posti che soddisfano le caratteristiche ne viene scelto uno a caso.

    ESEMPIO utilizzando un bagno con 5 orinatoi:

    1) bagno libero:
    CODICE
    +---+---+---+---+---+
    |     |      |     |      |     |
    +---+---+---+---+---+

    2) Entra un uomo e sceglie un posto a caso
    CODICE
    +---+---+---+---+---+
    |     |  X  |     |      |     |
    +---+---+---+---+---+

    3) Entra un altro uomo e sceglie l'ultimo bagno perchè più lontano dall'altro utente
    CODICE
    +---+---+---+---+---+
    |     |  X  |     |      | X |
    +---+---+---+---+---+

    4) Entra un altro uomo ma non riesce a trovare un posto libero. Fine del problema


    Esempio con 6 bagni (diverso):
    1) Il bagno è libero:
    CODICE
    +---+---+---+---+---+---+
    |     |      |     |      |     |     |
    +---+---+---+---+---+---+

    2) Entra un uomo e sceglie un posto a caso
    CODICE
    +---+---+---+---+---+---+
    |  X |      |     |      |     |     |
    +---+---+---+---+---+---+

    3) Entra un altro uomo e sceglie il posto più lontano:
    CODICE
    +---+---+---+---+---+---+
    |  X |      |     |      |     | X |
    +---+---+---+---+---+---+

    4) Entra un altro uomo che e vede che ci sono due posizioni valide (3 e 4 posto). Ne sceglie una a caso.
    CODICE
    +---+---+---+---+---+---+
    |  X |      |     | X  |     | X |
    +---+---+---+---+---+---+

    5) Entra un altro uomo che non trova posto. Fine programma


    Scopo dell'esercizio: Scrivere un programma che simuli questa situazione.

    Chiedete pure per chiarimenti.
     
    Top
    .
  2. Dodiz
     
    .

    User deleted


    immagino che per "caso" intendi input dall'utente, giusto?
     
    Top
    .
  3.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    No, viene sorteggiato a caso in modo pseudo-casuale.
     
    Top
    .
  4. Guglielmoqwerty
     
    .

    User deleted


    No, Dodiz, l'unico input dell'utente (se vuoi che sia l'utente a scegliere) è il numero di orinatoi all'inizio.

    Piccolo consiglio: il secondo uomo che entra occuperà sicuramente una delle sole due possibili ;)
    Piccolo consiglio (più utile): provate ad analizzare tutte le combinazioni possibili da 1 a 6 bagni e controllate come ragionate.
     
    Top
    .
  5.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Non ho risposto non perchè abbia qualcosa di difficile, ma semplicemente perchè non ho tempo. :asd:

    Immaginando di avere 6 posti totali, il ragionamento è il seguente:

    1) posti disponibili: {0,1,2,3,4,5};
    Occupo il posto 2.
    2) posti disponibili: {0,4,5}
    Occupo il posto 0.
    3) posti disponibili: {4, 5}
    Occupo il posto 5.
    4) Posti disponibili: {}
     
    Top
    .
  6. Guglielmoqwerty
     
    .

    User deleted


    Lo so che non è difficile (era ironia :P ). e ti capisco quando dici che non hai tempo (ne ho anch'io meno del solito quindi non sono andato avanti a scriverlo).

    Comunque no, al secondo passaggio occupi il posto 5 perchè è più lontano da 2. (5-2=3 2-0=0).

    Comunque suggerisco di provare con un posto, poi con due, poi con tre poi con 4, con 5 e infine con 6 tutte le soluzioni possibili. (In totale sono una decina senza contare le ripetizioni.)
     
    Top
    .
  7.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Allora non è chiara una cosa: da come è mostrato, almeno il primo, sembra che la cosa importante è lasciare "un buco" tra i due occupati. Come dici tu ora è invece lasciare più buchi possibili tra i due occupati... Quindi la scelta non è casuale, ma controllata.
     
    Top
    .
  8. Guglielmoqwerty
     
    .

    User deleted


    Allora forse mi sono espresso male. Se sono disponibili due posti con ugual numero di distanza (e sono più grandi di tutti gli altri) se ne sceglie uno a caso.

    ES: Supponiamo ci siano 7 bagni e il primo sceglie il 5. A questo punto sia il primo che l'ultimo sarebbero validi e se ne sceglie uno a caso ;)
     
    Top
    .
7 replies since 4/11/2013, 18:36   81 views
  Share  
.