AŞAĞIDAKİ KODDA SADECE TEK SAYILAR İÇİN ÇALIŞAN BİR SİSTEM VAR.BUNU NASIL TEK VEYA ÇİFT SAYI FARKETMEYECEK ŞEKİLDE DÜZELTEBİLRİZ?
package ulam;
import java.util.Arrays;
public class Ulam{
enum Direction{
RIGHT, UP, LEFT, DOWN;
}
private static String[][] genUlam(int n){
return genUlam(n, 0);
}
private static String[][] genUlam(int n, int i){
String[][] spiral = new String[n][n];
Direction dir = Direction.RIGHT;
int a = i;
int y = n/2;
int x = (n % 2 == 0) ? y - 1 : y;
while(a < ((n * n) )){
spiral[y][x] =String.format("%d", a);
switch(dir){
case RIGHT:
if( spiral[y + 1][x] == null && a > i) dir = Direction.DOWN; break;
case DOWN:
if(spiral[y][x - 1] == null) dir = Direction.LEFT; break;
case LEFT:
if( spiral[y - 1][x] == null) dir = Direction.UP; break;
case UP:
if(spiral[y][x + 1] == null) dir = Direction.RIGHT; break;
}
switch(dir){
case RIGHT: x++; break;
case DOWN: y++; break;
case LEFT: x--; break;
case UP: y--; break;
}
a++;
}
return spiral;
}
public static void main(String[] args){
String[][] ulam = genUlam(6);
for(String[] row : ulam){
System.out.println(Arrays.toString(row));
}
}
}