نمایش نتایج 1 تا 7 از 7

نام تاپیک: برنامه هشت وزیر با prolog

  1. #1

    Unhappy برنامه هشت وزیر با prolog

    سلام
    دوستان عزیز خواهشمندم هر کدامتان که برنامه و کد 8وزیر با پرولوگ را دارید ارسال نمایید. واقعا ممنون میشم.

  2. #2
    کاربر دائمی آواتار mehdad.koulab
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    345

    نقل قول: برنامه هشت وزیر با prolog

    سلام دوست عزیز تو مورد هشت وزیر تو سایت بحث شده ولی فکر نکنم پرولوگ باشه ولی این لینک رو ببینید به دردتون میخوره به زبان VB.net است
    https://barnamenevis.org/showthread.php?t=108490
    اینم یه دونه 8 داشت من گذاشتم
    https://barnamenevis.org/showthread.php?t=42897

  3. #3

    نقل قول: برنامه هشت وزیر با prolog

    سلام
    این مسله تو کتاب the art of prolog
    نویسنده:sterling وshapiro
    فصل14 حل شده
    search کنید ببینید ebook اش رو پیدا می کنید چون منم کتابش دارم
    اگه پیدا نشد بگید من کد واستون تایپ کنم

  4. #4

    نقل قول: برنامه هشت وزیر با prolog

    سلام
    از شما میخواهم که کد برنامه 8وزیر را که در کتابthe art of prolog است به بگذارید.

  5. #5

    نقل قول: برنامه هشت وزیر با prolog

    روش اول فرض می کنه که وزیر ها به صورت random رو صفحه قرار دارن و اونا رو مرتب می کنه
    کدش اینه:

    /* queens(N,Queens) :-
    Queens is a placement that solves the N queens problem,
    Represented as a permutation of the list of numbers [1,2,…,N]. */
    queens(N,Qs) :- range(1,N,Ns), permutation(Ns,Qs), safe(Qs).
    /* safe(Qs) :- the placement Qs is safe. */
    safe([Q|Qs]) :- safe(Qs), not attack(Q,Qs).
    safe([]).
    attack(X,Xs) :- attack (X,1,Xs).
    attack(X,N,[Y|Ys]) :- X is Y+N ; X is Y-N.
    attack (X<N,[Y|Ys]) :- N1 is N+1, attack(X,N1,Ys).
    permutation(Xs,[Z|Zs]) :- select(Z,Xs,Ys), permutation(Ys,Zs).
    permutation([],[]).
    select(X,[X|Xs],Xs).
    select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).
    range(M,N,[M|Ns]) :- M < N, M1 is M+1, range(M1,N,Ns).
    range(N,N,[N]).

  6. #6

    نقل قول: برنامه هشت وزیر با prolog

    روش دوم هر مرحله یک وزیر به صفحه اضافه می کنه
    کدش اینه:

    queens(N,Qs) :- range(1,N,Ns), queens(Ns,[],Qs).
    quees(UnplacedQs,SafeQs,Qs) :- select(Q,UnplacedQs,UnplacedQs1), not attack(Q,SafeQs),
    queens(UnplacedQs1,[Q|SafeQs],Qs.
    queens([],Qs,Qs).
    range(M,N,[M|Ns]) :- M < N, M1 is M+1, range(M1,N,Ns).
    range(N,N,[N]).
    select(X,[X|Xs],Xs).
    select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).
    attack(X,Xs) :- attack (X,1,Xs).
    attack(X,N,[Y|Ys]) :- X is Y+N ; X is Y-N.
    attack (X<N,[Y|Ys]) :- N1 is N+1, attack(X,N1,Ys).

  7. #7

    Lightbulb نقل قول: برنامه هشت وزیر با prolog

    کد مسئله هشت وزیر
    solution([ ]).
    solution([ p(X , Y) | Others]):-
    solution( Others),
    member(Y , [1,2,3,4,5,6,7,8]),
    noattack(p(X,Y), Others).


    noattack( _ , [ ]).
    noattack(p(X,Y), [ p(X1,Y1) | Others]):-
    Y =\= Y1 ,
    Y1-Y =\= X1-X ,
    Y1-Y =\= X-X1,
    noattack(p(X , Y), Others).


    % member
    % member( I,[ I | _ ]).
    % member( I,[ _ | Rest]):- member(I , Rest).


    کد رو در یک فایل نوت پد با پسوند .pl ذخیره کنید و برای اجرا هم :
    solution([p(1,Y1),p(2,Y2),p(3,Y3),p(4,Y4), p(5,Y5), p(6,Y6), p(7,Y7), p(8,Y8)]).

    پینوشت: اگه ادیتور پرولوگ را نصب ندارید میتونید از ادیتور انلاین اش استفاده کنید.https://swish.swi-prolog.org/p/eightQueen.pl

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •