public class HiiriShakki2 {
    public static double laskeReitti(int y1, int x1, int y2, int x2) {
        double[][] lauta = new double[8][8];
        lauta[y1][x1] = 1;
        for (int k = 0; k < 60; k++) {
            double[][] uusi = new double[8][8];
            for (int i = 0; i < 8; i++) {
                for (int j = 0; j < 8; j++) {
                    int suunnat = 4;
                    if ((i == 0 || i == 7) || (j == 0 || j == 7)) {
                        suunnat = 3;
                    }
                    if ((i == 0 || i == 7) && (j == 0 || j == 7)) {
                        suunnat = 2;
                    }
                    if (i > 0) uusi[i-1][j] += lauta[i][j]/suunnat;
                    if (i < 7) uusi[i+1][j] += lauta[i][j]/suunnat;
                    if (j > 0) uusi[i][j-1] += lauta[i][j]/suunnat;
                    if (j < 7) uusi[i][j+1] += lauta[i][j]/suunnat;
                }
            }
            lauta = uusi;
        }
        return lauta[y2][x2];
    }

    public static void main(String[] args) {
        double tulos = 0;
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 8; j++) {
                double tn = 1;
                for (int y = 0; y < 8; y++) {
                    for (int x = 0; x < 8; x++) {
                        tn *= (1-laskeReitti(y, x, i, j));
                    }
                }
                tulos += tn;
            }
        }
        System.out.println("Odotusarvo: " + tulos);
    }
}
