Problemino di Carla

Quando è necessario scegliere chi interrogare oppure chi spostare in classe potrebbe essere utili avere un generatore automatico di sequenze casuali di vittime predestinate del sistema scolastico nazionale…

Algoritmo

  1. Quanti allievi in classe?
  2. Acquisisci tutti nomi
  3. Mescola i nomi in modo imparziale
  4. Comunica la sequenza di nomi

Esempio

  • Elenco prima = { ‘Antoniol’, ‘Canzio’, ‘Cappellaro’, ‘Casanova De Marco’, ‘Chiovaro’, …, ‘Zucco’ }
  • Elenco dopo = { ‘Chiovaro’, ‘Antoniol’, ‘Peratoner’, ‘Cappellaro’, ‘Casanova De Marco’, …, ‘Canzio’ }

Approfondimenti

  1. I nomi degli allievi sono stringhe
  2. La sequenza di nomi diventa un array
  3. Per mescolare in modo imparziale si usano le funzioni Random() e SCAMBIA()
  4. Le permutazioni possibili per n nomi sono n!=n*(n-1)*(n-2)*...*2*1.

CODIFICA

  1. Pascal
  2. PHP: shuffle()
  3. Python: random.shuffle()

Continua

  1. Fai in modo che il programma possa essere utilizzato per qualsiasi classe
    Numero studenti? Nomi?
  2. Se la sequenza risultante non è soddisfacente?
    Aggiungi un menu con le opzioni input-mescola-output...

Attenzione!

Se si aggiungono delle condizioni, come

  • Tizio non può sedersi con Caio
  • Sempronio è miope…
  • le coppie (1°-2°, 3°-4°, …) devono essere sempre diverse
  • chi oggi occupa la prima fila la prossima volta deve passare in seconda..

allora ogni permutazione generata deve

  • superare tutte le condizioni stabilite,
  • … anche quelle rispetto alle permutazioni utilizzate precedentemente
  • … che quindi devono essere salvate su memoria di massa (file).

Il problema diventa più complesso…