import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class Grid {
    private Cell[][] cells;

    public Grid() {
        cells = new Cell[9][9];
        for (int ligne = 0; ligne < 9; ligne++) {
            for (int column = 0; column < 9; column++) {
                cells[ligne][column] = new Cell();
            }
        }
    }

    public void loadGridFromFile(String fileName) {
        try (DataInputStream input = new DataInputStream(new FileInputStream(fileName))) {
            for (int ligne = 0; ligne < 9; ligne++) {
                String line = String.valueOf(input.readInt());
                int length = line.length();
                if (length < 9) {
                    line = "000000000".substring(length) + line; // Ajoute les zéros au début si nécessaire
                }
                for (int column = 0; column < 9; column++) {
                    char digit = line.charAt(column);
                    int value = Character.getNumericValue(digit);
                    cells[ligne][column].setValue(value);
                }
            }
            System.out.println("Success");
            System.out.println(this);
        } catch (IOException e) {
            System.err.println("Error: " + e.getMessage());
        }
    }

    public Cell getCell(int ligne, int column) {
        return cells[ligne][column];
    }

    public void setCell(int ligne, int column, int value) {
        cells[ligne][column].setValue(value);
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (int ligne = 0; ligne < 9; ligne++) {
            for (int column = 0; column < 9; column++) {
                int value = cells[ligne][column].getValue();
                sb.append(value).append(" ");
            }
            sb.append("\n");
        }
        return sb.toString();
    }
}