2500336099

2500336099



Przykład: problem ośmiu hetmanów (1)

Należy ustawić osiem hetmanów na szachownicy w taki sposób, żeby się wzajemnie nie atakowały.

Lista [ql, ...,qk\ reprezentuje szachownicę z hetmanami stojącymi w wierszu qi /tej kolumny dla i=\,...,k. Funkcja isQueenSafe sprawdza, czy hetman może być postawiony w wierszu newq, co utworzy szachownicę [newq,ql,...,qk] . Nowy hetman nie może się znajdować w tym samym wierszu ani na tej samej przekątnej, co wcześniej ustawione hetmany. Zauważ, że | newq-qi\ =i zachodzi wtedy i tylko wtedy, kiedy newq i qi znajdują się na tej samej przekątnej.

let isQueenSafe oldqs newq = let rec nodiag = function (i, [1) -> true

| (i, q::qt) -> abs(newq-q)<>i && nodiag(i+1,qt) in not(List.mem newq oldqs) && nodiag(1,oldqs);; val isQueenSafe : int list -> int -> bool = <fun>


Zdzisław Spławski Programowanie funkcyjr 14



Wyszukiwarka

Podobne podstrony:
Przykład: problem ośmiu hetmanów (2)Funkcja nextQueen bierze szachownicę qs i generuje listę szachow
Przykład: problem ośmiu hetmanów (3) Funkcja depthQueen znajduje wszystkie rozwiązania problemu n
61 (234) ĆWICZENIE 4.10Hetman na szachownicyNapisz program, który wczyta położenie hetmana na szacho
CCF20090522003 tif 8 Słowo wstępne osiem godzin na dobę i w taki oto sposób nie trzeba już będzie s
Mowa sztućców [...] Obowiązuje zasada, że nakrycie należy odkładać na talerz w taki sposób, aby się
268 269 (12) Na przykład obracając prostą obciążenia wokół punktu spoczynkowego w taki sposób, żeby
skanuj0014 (288) 28 Arkusze kitlkulucyjne W celu zaznaczenia większej liczby komórek (zakresu komóre
SAVE0519 [] ’ios(q kontrolę ustawienia reflektorów asymetrycznych na masce należy przepro-radzić w n
Matem Finansowa 8 98 Dyskonto Przykład 3.4. (por. przykład 1.7) Jaki kapitał początkowy należy zainw

więcej podobnych podstron