Annettuna on n \times n -ruudukko, jonka joissain ruuduissa on kolikko.
Yhdellä siirrolla voit kerätä kaikki kolikot haluamaltasi pysty- tai vaakariviltä. Mikä on pienin tarvittava määrä siirtoja kerätä kaikki kolikot?
Ruudukon kuvauksessa merkki . tarkoittaa tyhjää ja merkki X tarkoittaa kolikkoa. Voit olettaa, että 1 \le n \le 20.
Python
Toteuta tiedostoon coingrid.py funktio count, joka ilmoittaa pienimmän määrän siirtoja kerätä kaikki kolikot.
def count(r):
    # TODO
if __name__ == "__main__":
    r =["........",
        "........",
        "...X..X.",
        "........",
        "....X...",
        "..X.X..X",
        "........",
        "....X..."]
    print(count(r)) # 3
Java
Toteuta tiedostoon CoinGrid.java metodi count, joka ilmoittaa pienimmän määrän siirtoja kerätä kaikki kolikot.
public class CoinGrid {
    public int count(String[] r) {
        // TODO
    }
    public static void main(String[] args) {
        CoinGrid c = new CoinGrid();
        String[] r = {"........",
                      "........",
                      "...X..X.",
                      "........",
                      "....X...",
                      "..X.X..X",
                      "........",
                      "....X..."};
        System.out.println(c.count(r)); // 3
    }
}
