Annettuna on shakkilauta, jossa on 8 \times 8 ruutua. Joissakin ruuduissa on ratsu.
Tehtäväsi on muodostaa ratsuista mahdollisimman monta paria, jotka uhkaavat toisiaan. Jokainen ratsu voi kuulua enintään yhteen pariin.
Ratsut uhkaavat toisiaan, jos niiden vaaka- ja pystyetäisyyksistä toinen on 1 ja toinen on 2 (shakin sääntöjen mukaisesti).
Laudan kuvauksessa merkki . tarkoittaa tyhjää ruutua ja merkki * tarkoittaa ratsua.
Python
Toteuta tiedostoon knightpairs.py funktio count, joka antaa suurimman parien määrän.
def count(r):
    # TODO
if __name__ == "__main__":
    r = ["*.......",
         "..*...*.",
         "........",
         ".*......",
         "...*....",
         ".......*",
         "........",
         "......*."]
    print(count(r)) # 3
Java
Toteuta tiedostoon KnightPairs.java metodi count, joka antaa suurimman parien määrän.
public class KnightPairs {
    public int count(String[] r) {
        // TODO
    }
    public static void main(String[] args) {
        KnightPairs k = new KnightPairs();
        String[] r = {"*.......",
                      "..*...*.",
                      "........",
                      ".*......",
                      "...*....",
                      ".......*",
                      "........",
                      "......*."};
        System.out.println(k.count(r)); // 3
    }
}
