На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> ПРИМЕНЕНИЕ СПИСКОВЫХ СТРУКТУР, никто не смог решить(((((
    Требуется запрограммировать поиск правильной расстановки 8 ферзей на шахматной доске, т.е. такой чтобы
    эти ферзи не били друг друга.

    С помощью предиката uazirler (queens) 2-х аргументов, найти все правильные расстановки ферзей на шахматной доске размером , в которых на 3-ей вертикале ферзи стоят на нечетных, а в 4-ой вертикале на четных горизонталях.
    prolog 5.2

    /*************UAZIRLER****************/
    DOMAINS
    i=integer
    l=i*

    PREDICATES
    uazirler(l,i)
    uazirler(l,l,l)
    zheydy(i,l,i)
    member(i,l)
    delete(i,l,l)
    generate(i,i,l)

    CLAUSES
    % uazirler(List,Number)
    uazirler(T,N):-
    generate(1,N,U),
    uazirler(T,[],U).

    % uazirler(List,Sufix,Prefix )
    uazirler(T,T,[]).
    uazirler(T,W,U0):-
    member(A,U0),
    not(zheydy(A,W,1)),
    delete(A,U0,U1),
    uazirler(T,[A|W],U1).

    zheydy(A,[B|W],R):-
    R=abs(A-B);
    R1=R+1,
    zheydy(A,W,R1).

    member(A,[A|U]).
    member(A,[_|U]):-
    member(A,U).

    delete(A,[A|U],U).
    delete(A,[B|U0],[B|U1]):-
    delete(A,U0,U1).

    generate (M,M,[M]).
    generate (N,M,[N|S]):-
    N<M,
    N1=N+1,
    generate (N1,M,S).
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0144 ]   [ 15 queries used ]   [ Generated: 28.05.24, 02:12 GMT ]