Salve a tutti,
Per la mia tesina di 5° superiore, come argomento d'esame, ho deciso di portare il famoso gioco "game of life". Per quanto riguarda informatica volevo sviluppare un programma che mostrava graficamente il gioco e su wikibook ho trovato l'algoritmo che mostra il gioco su riga di comando. Stavo pensando di adattarlo alle librerie grafiche wxwidget ma non riesco a capire alcune cose su questo algoritmo:
perché sopra usa std::hex e std::dec? e le righe "typedef std::set<Casella *> Container; typedef Container::iterator Iterator;" a che servono?
- - - Updated - - -
Ho creato un algoritmo io molto più semplice da capire ma funziona. L'unica cosa che volevo capire di questo algoritmo è come fa a inizializzare le celle vive e morte.
Utilizza queste righe da quel che ho capito:
scrive poi un commento: // Inizializza la griglia casualmente, con fattore di riempimento un ottavo.
Non ho capito che vuol dire fattore di riempimento un ottavo
Per la mia tesina di 5° superiore, come argomento d'esame, ho deciso di portare il famoso gioco "game of life". Per quanto riguarda informatica volevo sviluppare un programma che mostrava graficamente il gioco e su wikibook ho trovato l'algoritmo che mostra il gioco su riga di comando. Stavo pensando di adattarlo alle librerie grafiche wxwidget ma non riesco a capire alcune cose su questo algoritmo:
Codice:
[COLOR=#666666][FONT=monospace]// Author: BlakWolf, © 2004[/FONT][/COLOR] [COLOR=#666666]// Released under GPL v.2 or later, at your option[/COLOR]
[COLOR=#339900]#include <iostream>[/COLOR]
[COLOR=#339900]#include <cstdlib>[/COLOR]
[COLOR=#339900]#include <vector>[/COLOR]
[COLOR=#339900]#include <set> [/COLOR]
[COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#0000DD]cout[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#0000DD]cin[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]dec[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]hex[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#666666]// Osservabile e osservato contemporaneamente, gestisce le regole "biologiche"[/COLOR]
[COLOR=#0000FF]class[/COLOR] Casella[COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
[COLOR=#0000FF]enum[/COLOR] stato[COLOR=#008000]{[/COLOR]vuoto[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR],pieno[COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]typedef[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]set[/COLOR][COLOR=#000080]<[/COLOR]Casella [COLOR=#000040]*[/COLOR][COLOR=#000080]>[/COLOR] Container[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]typedef[/COLOR] Container[COLOR=#008080]::[/COLOR][COLOR=#007788]iterator[/COLOR] Iterator[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
stato stato_[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]int[/COLOR] vicini_futuri[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]int[/COLOR] vicini[COLOR=#008080];[/COLOR]
Container osservatori[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
Casella[COLOR=#008000]([/COLOR] [COLOR=#0000FF]const[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]stato[/COLOR] [COLOR=#000040]&[/COLOR] s [COLOR=#000080]=[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]vuoto[/COLOR] [COLOR=#008000])[/COLOR]
[COLOR=#008080]:[/COLOR] stato_[COLOR=#008000]([/COLOR]s[COLOR=#008000])[/COLOR], vicini_futuri[COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR], vicini[COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
[COLOR=#666666]//non copia gli osservatori[/COLOR]
Casella[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] Casella[COLOR=#000040]&[/COLOR] c[COLOR=#008000])[/COLOR][COLOR=#008080]:[/COLOR] vicini[COLOR=#008000]([/COLOR]c.[COLOR=#007788]vicini[/COLOR][COLOR=#008000])[/COLOR],
vicini_futuri[COLOR=#008000]([/COLOR]c.[COLOR=#007788]vicini_futuri[/COLOR][COLOR=#008000])[/COLOR], stato_[COLOR=#008000]([/COLOR]c.[COLOR=#007788]stato_[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]virtual[/COLOR] ~Casella[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Registra gli osservatori a cui notificare i cambiamenti[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Registra[COLOR=#008000]([/COLOR]Casella[COLOR=#000040]&[/COLOR] c[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]&[/COLOR]c [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR] [COLOR=#0000DD]this[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
osservatori.[COLOR=#007788]insert[/COLOR][COLOR=#008000]([/COLOR][COLOR=#000040]&[/COLOR]c[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Imposta[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]stato[/COLOR][COLOR=#000040]&[/COLOR] s[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
stato_[COLOR=#000080]=[/COLOR]s[COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Muori[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR][COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
Imposta[COLOR=#008000]([/COLOR]Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]vuoto[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
Notifica[COLOR=#008000]([/COLOR][COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Nasci[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]vuoto[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
Imposta[COLOR=#008000]([/COLOR]Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]pieno[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
Notifica[COLOR=#008000]([/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Aggiorna [/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Ciclo[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
vicini[COLOR=#000080]=[/COLOR]vicini_futuri[COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Regole del gioco[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Verifica[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]vicini[COLOR=#000080]<[/COLOR][COLOR=#0000DD]2[/COLOR] [COLOR=#000040]||[/COLOR] vicini[COLOR=#000080]>[/COLOR][COLOR=#0000DD]3[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#666666]// Modificare questa riga per cambiare le regole di morte[/COLOR]
Muori[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR][COLOR=#0000FF]else[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]vicini[COLOR=#000080]==[/COLOR][COLOR=#0000DD]3[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#666666]// Modificare questa riga per cambiare le regole di nascita[/COLOR]
Nasci[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]bool[/COLOR] Leggi[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]return[/COLOR] stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
[COLOR=#666666]// Notifica ai vicini nascita o morte[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Notifica[COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] msg[COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR]Iterator it [COLOR=#000080]=[/COLOR] osservatori.[COLOR=#007788]begin[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR] it [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR] osservatori.[COLOR=#007788]end[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#000040]++[/COLOR]it[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#008000]([/COLOR][COLOR=#000040]*[/COLOR]it[COLOR=#008000])[/COLOR][COLOR=#000040]-[/COLOR][COLOR=#000080]>[/COLOR]RiceviNotifica[COLOR=#008000]([/COLOR]msg[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Ricevi la notifica dai vicini[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] RiceviNotifica[COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] msg[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
vicini_futuri [COLOR=#000040]+[/COLOR][COLOR=#000080]=[/COLOR] msg[COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#666666]// Contenitore di caselle, che genera automaticamente le corrispondenze tra vicini. [/COLOR]
[COLOR=#666666]// Gestisce le regole "topologiche"[/COLOR]
[COLOR=#0000FF]class[/COLOR] Griglia[COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
[COLOR=#0000FF]typedef[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]vector[/COLOR][COLOR=#000080]<[/COLOR]Casella[COLOR=#000080]>[/COLOR] Container[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]typedef[/COLOR] Container[COLOR=#008080]::[/COLOR][COLOR=#007788]iterator[/COLOR] Iterator[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
[COLOR=#0000FF]int[/COLOR] righe_[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]int[/COLOR] colonne_[COLOR=#008080];[/COLOR]
Container griglia[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
[COLOR=#0000FF]virtual[/COLOR] ~Griglia[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
Griglia[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] righe, [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] colonne[COLOR=#008000])[/COLOR]
[COLOR=#008080]:[/COLOR]righe_[COLOR=#008000]([/COLOR]righe[COLOR=#008000])[/COLOR], colonne_[COLOR=#008000]([/COLOR]colonne[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]righe_ [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]5[/COLOR][COLOR=#008000])[/COLOR] righe_[COLOR=#000080]=[/COLOR][COLOR=#0000DD]5[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]colonne_ [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]5[/COLOR][COLOR=#008000])[/COLOR] righe_[COLOR=#000080]=[/COLOR][COLOR=#0000DD]5[/COLOR][COLOR=#008080];[/COLOR]
griglia.[COLOR=#007788]reserve[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
griglia.[COLOR=#007788]resize[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] Casella[COLOR=#000040]&[/COLOR] operator[COLOR=#008000][[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] n[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]return[/COLOR] griglia[COLOR=#008000][[/COLOR]n[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Cicla[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i [COLOR=#000080]=[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR].[COLOR=#007788]Ciclo[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]void[/COLOR] Verifica[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i [COLOR=#000080]=[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR].[COLOR=#007788]Verifica[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Imposta [COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] pos[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]>=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#000040]&&[/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]<[/COLOR] griglia.[COLOR=#007788]size[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]pos[COLOR=#008000]][/COLOR].[COLOR=#007788]Nasci[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Resetta [COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] pos[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]>=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#000040]&&[/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]<[/COLOR] griglia.[COLOR=#007788]size[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]pos[COLOR=#008000]][/COLOR].[COLOR=#007788]Muori[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Modificare questa routine per cambiare le regole topologiche di vicinanza[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Genera[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]bool[/COLOR] primo, ultimo[COLOR=#008080];[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] indice[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] indice[COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]indice[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
primo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR]colonne_[COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
ultimo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR]colonne_[COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] colonne_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000080]>[/COLOR] colonne_[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_ [COLOR=#000040]-[/COLOR] [COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_[COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_ [COLOR=#000040]+[/COLOR] [COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000080]<[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#000040]*[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#000040]+[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] Righe[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#008000]{[/COLOR] [COLOR=#0000FF]return[/COLOR] righe_[COLOR=#008080];[/COLOR] [COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] Colonne[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#008000]{[/COLOR] [COLOR=#0000FF]return[/COLOR] colonne_[COLOR=#008080];[/COLOR] [COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#666666]//Stampa a schermo la griglia. Gestione statica delle dimensioni. Per variare, utilizzare griglia.Righe() e Colonne()[/COLOR]
[COLOR=#0000FF]void[/COLOR] Stampa[COLOR=#008000]([/COLOR] Griglia[COLOR=#000040]&[/COLOR] g[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
[COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"[COLOR=#000099][B]\n[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"+--------------------+[COLOR=#000099][B]\n[/B][/COLOR]|"[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] indice[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR]indice [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]400[/COLOR][COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]indice[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]bool[/COLOR] ultimo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR][COLOR=#800080]20[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] [COLOR=#0000DD]19[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
g[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Leggi[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080]?[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"O"[/COLOR][COLOR=#008080]:[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]" "[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]ultimo[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR][COLOR=#0000DD]399[/COLOR][COLOR=#008000])[/COLOR]
[COLOR=#008000]{[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"|[COLOR=#000099][B]\n[/B][/COLOR]|"[/COLOR][COLOR=#008080];[/COLOR][COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]else[/COLOR]
[COLOR=#008000]{[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"|[COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR][COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"+--------------------+[COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]int[/COLOR] main [COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
Griglia griglia[COLOR=#008000]([/COLOR][COLOR=#0000DD]20[/COLOR],[COLOR=#0000DD]20[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008080];[/COLOR]
griglia.[COLOR=#007788]Genera[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#666666]// Inizializza la griglia casualmente, con fattore di [/COLOR]
[COLOR=#666666]// riempimento un ottavo.[/COLOR]
[COLOR=#666666]// Gestione statica delle dimensioni. Per variare, utilizzare griglia.Righe() e Colonne()[/COLOR]
[COLOR=#0000DD]srand[/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]time[/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]100[/COLOR][COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
griglia.[COLOR=#007788]Imposta[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]rand[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#000080]>>[/COLOR][COLOR=#0000DD]4[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#000040]%[/COLOR][COLOR=#800080]400[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#0000FF]while[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
Stampa[COLOR=#008000]([/COLOR]griglia[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
griglia.[COLOR=#007788]Cicla[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
griglia.[COLOR=#007788]Verifica[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#666666]// Aspetta la pressione di enter[/COLOR]
[COLOR=#0000DD]cin[/COLOR].[COLOR=#007788]get[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#666666]// Mai raggiunto[/COLOR]
[COLOR=#0000FF]return[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#008000][FONT=monospace]}[/FONT][/COLOR]
perché sopra usa std::hex e std::dec? e le righe "typedef std::set<Casella *> Container; typedef Container::iterator Iterator;" a che servono?
- - - Updated - - -
Ho creato un algoritmo io molto più semplice da capire ma funziona. L'unica cosa che volevo capire di questo algoritmo è come fa a inizializzare le celle vive e morte.
Utilizza queste righe da quel che ho capito:
inline void Imposta (const int& pos) {
if ((pos >=0)&&(pos < griglia.size()))
griglia[pos].Nasci()
for (int i=0; i < 100;++i){ griglia.Imposta((rand()>>4) %400);
}
scrive poi un commento: // Inizializza la griglia casualmente, con fattore di riempimento un ottavo.
Non ho capito che vuol dire fattore di riempimento un ottavo