Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pub:labprog:20171211 [2017/12/11 17:18]
atrent created
pub:labprog:20171211 [2017/12/13 08:13] (current)
atrent
Line 6: Line 6:
  
 <code java> <code java>
-// dall'​aula:​ 172.22.83.53 
-// dai portatili: atrent.it:​993 
- 
 import java.util.*;​ import java.util.*;​
 import java.io.*; import java.io.*;
 +import java.util.concurrent.*;​
  
 public class Life { public class Life {
Line 29: Line 27:
     public Campo cambiaCampo() {     public Campo cambiaCampo() {
         if(campoCorrente==campo1) {         if(campoCorrente==campo1) {
-        System.out.println("​era campo1"​);​+            //System.out.println("​era campo1"​);​
             campoCorrente=campo2;​             campoCorrente=campo2;​
             altro=campo1;​             altro=campo1;​
         }         }
         else if(campoCorrente==campo2) {         else if(campoCorrente==campo2) {
-        System.out.println("​era campo2"​);​+            //System.out.println("​era campo2"​);​
             campoCorrente=campo1;​             campoCorrente=campo1;​
             altro=campo2;​             altro=campo2;​
Line 43: Line 41:
     /**     /**
     calcola una singola "​generazione"​ di celle     calcola una singola "​generazione"​ di celle
-     + 
-    regole: +    regole ​https://​en.wikipedia.org/​wiki/​Conway%27s_Game_of_Life#​Rules 
-     +
     - <2 intorno, muore     - <2 intorno, muore
     - 2,3 intorno, resta viva     - 2,3 intorno, resta viva
Line 55: Line 53:
         for(int riga=0; riga<​righe;​ riga++) {         for(int riga=0; riga<​righe;​ riga++) {
             for(int colonna=0; colonna<​colonne;​ colonna++) {             for(int colonna=0; colonna<​colonne;​ colonna++) {
-            int q=campoCorrente.quanteViveIntorno(riga,​colonna);​ +                ​int q=campoCorrente.quanteViveIntorno(riga,​colonna);​ 
-              + 
-             if(q<2) altro.impostaCella(riga,​colonna,​Campo.MORTA);​ +                // mancava la copia del vecchio stato 
-             if(q>3) altro.impostaCella(riga,​colonna,​Campo.MORTA);​ +                altro.impostaCella(riga,​colonna,​campoCorrente.osservaCella(riga,​colonna));​ 
-             if(q==3) altro.impostaCella(riga,​colonna,​Campo.VIVA);​ + 
-                System.err.print(campoCorrente.quanteViveIntorno(riga,​colonna)); +                ​if(q<2) altro.impostaCella(riga,​colonna,​Campo.MORTA);​ 
-                //​System.err.print("​ ");+                if(q>3) altro.impostaCella(riga,​colonna,​Campo.MORTA);​ 
 +                if(q==3) altro.impostaCella(riga,​colonna,​Campo.VIVA);​ 
 +                ​//System.err.print(campoCorrente.quanteViveIntorno(riga,​colonna));​
             }             }
-            System.err.println();​+            ​//System.err.println();​
         }         }
-        ​System.out.println(cambiaCampo());+        cambiaCampo();​
     }     }
  
Line 108: Line 108:
     throws Exception     throws Exception
     {     {
-        Life l=new Life(10,30); // istanziazione (tutto a "​zero"​) +        Life l=new Life(30,180); // istanziazione (tutto a "​zero"​)
- +
-        System.out.println(l);​ // stampo stato iniziale+
  
 +        //​System.out.println(l);​ // stampo stato iniziale
         //​l._inizializzazioneTest();​ // modifico stato         //​l._inizializzazioneTest();​ // modifico stato
- 
         l.inizializzazione("​initLife.txt"​);​ // modifico stato         l.inizializzazione("​initLife.txt"​);​ // modifico stato
 +        //​System.out.println(l);​ // stampo stato a valle modifica
  
-        ​System.out.println(l); ​// stampo stato a valle modifica +        //​System.out.println(l.campoCorrente.quanteViveIntorno(4,​9));​ //​ expected: 5 
- +        ​//System.out.println(l.campoCorrente.quanteViveIntorno(4,​20));​ //​ expected: 4 
-        ​System.out.println(l.campoCorrente.quanteViveIntorno(4,​9));​ // expected: 5 +        ​//System.out.println(l.campoCorrente.quanteViveIntorno(0,​0));​ //​ expected: 2
-        System.out.println(l.campoCorrente.quanteViveIntorno(4,​20));​ // expected: 4 +
-        System.out.println(l.campoCorrente.quanteViveIntorno(0,​0));​ // expected: 2+
  
- for(int it=0;it<100;it++){ +        ​for(int it=0; it<1000; it++) { 
-        l.iterazione();​ +            l.iterazione();​ 
-        System.out.println(l.campo());​+            System.out.println(l.campo()); 
 +            System.out.print("​\033[H"​);​ 
 +            TimeUnit.MILLISECONDS.sleep(50);
         }         }
     }     }
  
     public String campo() {     public String campo() {
-    return campoCorrente.campo();​+        ​return campoCorrente.campo();​
     }     }
  
Line 227: Line 226:
         return celle[coordRiga(riga)][coordColonna(colonna)];​         return celle[coordRiga(riga)][coordColonna(colonna)];​
     }     }
-    ​+
     public char charCella(int riga, int colonna) {     public char charCella(int riga, int colonna) {
-    if(osservaCella(riga,​colonna)) return '​*';​ +        ​if(osservaCella(riga,​colonna)) return '​*';​ 
-     return '​.';​+        return '​.';​
     }     }
-    ​ + 
-    public int isViva(int coordX, int coordY){ +    public int isViva(int coordX, int coordY) { 
-     ​if(osservaCella(coordX,​ coordY)) return 1; +        if(osservaCella(coordX,​ coordY)) return 1; 
-     ​return 0;+        return 0;
     }     }
-    ​ + 
-    public int coordRiga(int riga){ +    public int coordRiga(int riga) { 
-     if(riga==-1) return righe-1; +        if(riga==-1) return righe-1; 
-     if(riga==righe) return 0; +        if(riga==righe) return 0; 
-     return riga;+        return riga;
     }     }
  
-    public int coordColonna(int colonna){ +    public int coordColonna(int colonna) { 
-     if(colonna==-1) return colonne-1;​ +        if(colonna==-1) return colonne-1;​ 
-     if(colonna==colonne) return 0; +        if(colonna==colonne) return 0; 
-     return colonna;+        return colonna; 
 +    } 
 + 
 +    public int quanteViveIntorno(int riga, int colonna) { 
 + 
 +        return 
 +            isViva(riga-1,​colonna-1)+ 
 +            isViva(riga-1,​colonna)+ 
 +            isViva(riga-1,​colonna+1)+ 
 +            isViva(riga,​colonna-1)+ 
 +            isViva(riga,​colonna+1)+ 
 +            isViva(riga+1,​colonna-1)+ 
 +            isViva(riga+1,​colonna)+ 
 +            isViva(riga+1,​colonna+1);​ 
 + 
 + 
 + 
 +        /* 
 +        if(riga!=0 && riga!=ultima) 
 +        { 
 +        if(isviva(riga-1,​colonna)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna)) 
 +        vivaintorno++;​ 
 + 
 +        if(colonna!=0 && colonna!=ultima) 
 +        { 
 +        if(isviva(riga,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        } 
 +        else 
 +        { 
 +        if(colonna==ultima) 
 +        { 
 +        if(isviva(riga,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​0)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​0)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​0)) 
 +        vivaintorno++;​ 
 +        } 
 +        else 
 +        { 
 +        if(isviva(riga,​ultima)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​ultima)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​ultima)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        } 
 +        } 
 + 
 +        } 
 +        else //riga non ultima e non prima 
 +        { 
 +        if(riga==ultima) 
 +        { 
 +        if(isviva(riga-1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga-1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(0,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(0,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​colonna+1)) 
 +        vivaintorno++;​ 
 +        } 
 +        else 
 +        { 
 +        if(isviva(riga,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(riga+1,​colonna+1)) 
 +        vivaintorno++;​ 
 +        if(isviva(ultima,​colonna-1)) 
 +        vivaintorno++;​ 
 +        if(isviva(ultima,​colonna+1)) 
 +        vivaintorno++;​ 
 +        } 
 +        */
     }     }
  
- public int quanteViveIntorno(int riga, int colonna){ 
-  
- return 
- isViva(riga-1,​colonna-1)+ 
- isViva(riga-1,​colonna)+ 
- isViva(riga-1,​colonna+1)+ 
- isViva(riga,​colonna-1)+ 
- isViva(riga,​colonna+1)+ 
- isViva(riga+1,​colonna-1)+ 
- isViva(riga+1,​colonna)+ 
- isViva(riga+1,​colonna+1);​ 
-  
-  
-  
- /* 
- if(riga!=0 && riga!=ultima) 
- {  
- if(isviva(riga-1,​colonna)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna)) 
- vivaintorno++;​ 
-  
- if(colonna!=0 && colonna!=ultima) 
- { 
- if(isviva(riga,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​colonna+1)) 
- vivaintorno++;​ 
- } 
- else 
- { 
- if(colonna==ultima) 
- { 
- if(isviva(riga,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga,​0)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​0)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​0)) 
- vivaintorno++;​ 
- } 
- else 
- { 
- if(isviva(riga,​ultima)) 
- vivaintorno++;​ 
- if(isviva(riga,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​ultima)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​ultima)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​colonna+1)) 
- vivaintorno++;​ 
- } 
- } 
-  
- } 
- else //riga non ultima e non prima 
- { 
- if(riga==ultima) 
- { 
- if(isviva(riga-1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga-1,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(0,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(0,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga,​colonna+1)) 
- vivaintorno++;​ 
- } 
- else 
- { 
- if(isviva(riga,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(riga+1,​colonna+1)) 
- vivaintorno++;​ 
- if(isviva(ultima,​colonna-1)) 
- vivaintorno++;​ 
- if(isviva(ultima,​colonna+1)) 
- vivaintorno++;​ 
- } 
- */ 
- } 
-  
  
  
Line 372: Line 371:
 .............................. ..............................
 .............................. ..............................
-..............................</​code>​+.............................. 
 +</​code>​ 
 + 
 + 
 +Glider cannon 
 +<​code>​ 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.....................................*.............................................................................................................................................. 
 +...................................*.*.............................................................................................................................................. 
 +.........................**......**............**................................................................................................................................... 
 +........................*...*....**............**................................................................................................................................... 
 +.............**........*.....*...**................................................................................................................................................. 
 +.............**........*...*.**....*.*.............................................................................................................................................. 
 +.......................*.....*.......*.............................................................................................................................................. 
 +........................*...*....................................................................................................................................................... 
 +.........................**......................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +.................................................................................................................................................................................... 
 +</​code>​
pub/labprog/20171211.txt · Last modified: 2017/12/13 08:13 by atrent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0