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 } }