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ę szachowPrzykład: problem ośmiu hetmanów (3) Funkcja depthQueen znajduje wszystkie rozwiązania problemu n61 (234) ĆWICZENIE 4.10Hetman na szachownicyNapisz program, który wczyta położenie hetmana na szachoCCF20090522 003 tif 8 Słowo wstępne osiem godzin na dobę i w taki oto sposób nie trzeba już będzie sMowa 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, żebyskanuj0014 (288) 28 Arkusze kitlkulucyjne W celu zaznaczenia większej liczby komórek (zakresu komóreSAVE0519 [] ’ios(q kontrolę ustawienia reflektorów asymetrycznych na masce należy przepro-radzić w nMatem Finansowa 8 98 Dyskonto Przykład 3.4. (por. przykład 1.7) Jaki kapitał początkowy należy zainwwięcej podobnych podstron