Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.lang.Math;
- class A326407{
- public static void main(String[] args){
- int length = 100;
- int side = (int) (Math.ceil(Math.sqrt((double)length)) + 1);
- int[][] grid = new int[side][side];
- fillGrid(grid);
- int[][] marked = markMines(grid);
- int[][] transf = transform(marked);
- //display(transf);
- read(length, transf);
- }
- static int[] coordinates(int n){
- int[] output = new int[2];
- int lower = (int) (Math.ceil(Math.sqrt(n)) - 1);
- int reminder = n - lower * lower;
- if (reminder > lower + 1){
- output[0] = 2*lower+1-reminder;
- output[1] = lower ;
- } else {
- output[0]= lower ;
- output[1]= reminder -1;
- }
- //System.out.println(n+" " + lower + " " + reminder + " " + output[0] + " " +output[1]);
- return output;
- }
- static void fillGrid(int[][] grid){
- grid[0][0] = 1;
- for (int i = 2; i < grid.length*grid.length+1 ; i++){
- grid[coordinates(i)[0]][coordinates(i)[1]]=i;
- }
- }
- static int[][] markMines(int[][] grid){
- int[][] output = new int[grid.length][grid.length];
- for(int i = 0; i < grid.length; i++){
- for(int j = 0; j < grid.length; j++){
- if (isPrime(grid[i][j])){
- output[i][j] = -1;
- } else {
- output[i][j] = grid[i][j];
- }
- }
- }
- return output;
- }
- static int checkMine(int i, int j, int[][] grid){
- if (grid[i][j] == -1) {return 1;}
- else {return 0;}
- }
- static int[][] transform(int[][] grid){
- int[][] output = new int[grid.length][grid.length];
- for(int i = 0; i < grid.length; i++){
- for(int j = 0; j < grid.length; j++){
- if (checkMine(i,j,grid)==1){output[i][j]=-1;}
- else {
- for (int k = -1; k<2;k++){
- for (int l = -1; l<2;l++){
- if ((i+k>-1) && (j+l>-1) && (i+k<grid.length) && (j+l<grid.length)) {output[i][j]=output[i][j]+checkMine(i+k,j+l,grid);}
- }
- }
- }
- }
- }
- return output;
- }
- static boolean isPrime(int n){
- if (n==1){return false;}
- if (n==2){return true;}
- if (n>2){
- if (n%2==0) {return false;}
- else{
- for(int i=3; i*i < n+1 ;i++){
- if (n%i == 0) {return false;}
- }
- }
- }
- return true;
- }
- static void display(int[][] array){
- for (int i = 0; i< array.length; i++){
- for (int j = 0; j< array[0].length; j++){
- System.out.print(array[i][j]+"\t");
- }
- System.out.println();
- }
- }
- static void read(int n, int[][] grid){
- for (int i = 1; i< n+1; i++){
- System.out.println(i+ " " + grid[coordinates(i)[0]][coordinates(i)[1]]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement