Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Percolation {
- static int size = 4;
- static int length = size*size;
- static boolean[] grid = new boolean[length];
- static int step = 0;
- void init() {
- for (int i = 0; i < size; i++){
- for (int j = 0; j < size; j++)
- grid[i*size+j] = false;
- }
- }
- void print() {
- for (int j = 0; j < size; j++){
- System.out.println();
- for (int i = 0; i < size; i++){
- if (grid[i*size+j])
- System.out.print('*');
- else
- System.out.print('-');
- }
- }
- }
- int random_shadow() {
- int index = (int)(Math.random()*length);
- if(!grid[index]) {
- grid[index] = true;
- return index;
- }
- else return random_shadow();
- }
- float percolation() {
- float summ = 0;
- boolean perc=false;
- while(!perc) {
- System.out.print("un nouveau case noir");
- random_shadow();
- for (int i = 0; i < length; i++)
- if (grid[i]&(i % size != size-1)&(i % size != 0)) {
- if(is_percolation(i)){
- perc=true;
- System.out.println("DABLYAD");
- for (int j = 0; j < length; j++)
- if(grid[j]) summ++;
- summ/=length;
- break;
- }
- }
- }
- return summ;
- }
- boolean is_percolation(int n) {
- System.out.print("Is percolation");
- boolean[] seen = new boolean[length];
- step=0;
- if (grid[n]) {
- if(detect_path(seen, n, true))
- //seen = new boolean[length];
- {
- step=0;
- if (detect_path(seen, n, false))
- return true;
- }
- }
- return false;
- }
- boolean detect_path(boolean[] seen, int n, boolean up){
- seen[n] = true;
- System.out.println();
- System.out.print(step++);
- for (int j = 0; j < size; j++){
- System.out.println();
- for (int i = 0; i < size; i++){
- if (seen[i*size+j])
- System.out.print('*');
- else
- System.out.print('-');
- }
- }
- System.out.println();
- if (((n % size == 0)&up)||((n % size == size-1)&!up)) {
- System.out.println("return TRUE FUCK");
- System.out.println(size);
- System.out.println(n);
- return true;
- }
- if (n-1 >=0&up) {
- if((grid[n-1])&(!seen[n-1])) return detect_path(seen, n-1 , up);
- }
- if (n+1 < length&!up) {
- if((grid[n+1])&(!seen[n+1])) return detect_path(seen, n+1 , up);
- }
- if (n+size < length) {
- if((grid[n+size])&(!seen[n+size])) return detect_path(seen, n+size , up);
- }
- if (n-size >= 0) {
- if((grid[n-size])&(!seen[n-size])) return detect_path(seen, n-size , up);
- }
- if(up & (((n+1) % size) != size-1))
- if(grid[n+1]) {
- System.out.print("return down");
- return detect_path(seen, n+1 , up);
- }
- if (!up & (((n-1) % size) != 0))
- if(grid[n-1]) {
- System.out.print("return up");
- return detect_path(seen, n-1 , up);
- }
- return false;
- }
- public static void main(String[] args) {
- Percolation p = new Percolation();
- p.init();
- //System.out.println((int)(Math.random()*(Percolation.length)));
- //p.grid = new boolean[]{true,true,true,false,false,false,true,false,false,true,true,true,false,false,true,true};
- //p.grid[5]=true;
- //p.grid[7]=true;
- float summ = p.percolation();
- System.out.println(summ);
- boolean[] seen = new boolean[length];
- //System.out.println(p.detect_path(seen, 11, true));
- p.print();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement