私は Prolog でプログラミングしていて、完全に途方に暮れています... たとえ似ていなくても、プログラミング言語をごちゃまぜにしています... 課題として、Meta-Forms というゲームを作成しています。与えられたいくつかの手がかりに従って、3x3 ボードにさまざまな種類のピースを配置します。たとえば、ボード「Board」の左上隅に黄色の長方形を配置するには、次のコードを使用します。 place(piece(rectangle, yellow), top, left, Board) 2 番目と 3 番目の引数による、位置に応じてリストBに配置しました。[(上、左)、(上、中)、(上、右)、(中、左)、(中、中)、(中、左)、(下、左)、(下、中)、(右下)]。しかし、位置の代わりに「ピース(長方形、黄色)」が必要です」を作るのを手伝ってくれませんか
put_piece(X, [X,_,_,_,_,_,_,_,_]) :- line_of(place(_,top,_,_), top), column_of(place(_,_,left,_), !.
put_piece(X, [_,X,_,_,_,_,_,_,_]) :- line_of(place(_,top,_,_), top), column_of(place(_,_,middle,_), middle), !.
put_piece(X, [_,_,X,_,_,_,_,_,_]) :- line_of(place(_,top,_,_), top), column_of(place(_,_,right,_), right), !.
put_piece(X, [_,_,_,X,_,_,_,_,_]) :- line_of(place(_,center,_,_), center), column_of(place(_,_,left,_), left), !.
put_piece(X, [_,_,_,_,X,_,_,_,_]) :- line_of(place(_,center,_,_), center), column_of(place(_,_,middle,_), middle), !.
put_piece(X, [_,_,_,_,_,X,_,_,_]) :- line_of(place(_,center,_,_), center), column_of(place(_,_,right,_), right), !.
put_piece(X, [_,_,_,_,_,_,X,_,_]) :- line_of(place(_,bottom,_,_), bottom), column_of(place(_,_,left,_), left), !.
put_piece(X, [_,_,_,_,_,_,_,X,_]) :- line_of(place(_,bottom,_,_), bottom), column_of(place(_,_,middle,_), middle), !.
put_piece(X, [_,_,_,_,_,_,_,_,X]) :- line_of(place(_,bottom,_,_), bottom), column_of(place(_,_,right,_), right), !.
line_of(place(_,Line,_,_), Line).
column_of(place(_,_,Column,_), Column).
cor_de(defPiece(_,Color), Color).
forma_de(defPiece(Form,_), Form).
place(P, L, Col, Tab) :-
put_piece(P, Tab),
line_of(place(_,L,_,_), L),
column_of(place(_,_,Col,_), Col),
color_of(Piece, cor),
form_of(P, forma).
また、ペアの作り方も教えていただきたいです。作品は形と色を含む対であると考えられ、位置は柱と線の対であると考えられます。
例:
challenge(1, Board) :-
place(piece(square, blue), bottom, left, Board),
place(piece(square, yellow), top, left, Board),
place(piece(circle, blue), center, right, Board),
place(piece(circle, red), top, middle, Board),
place(piece(square, red), bottom, right, Board),
place(piece(triangle, blue), top, right, Board),
place(piece(circle, yellow), bottom, middle, Board),
place(piece(triangle, red), center, left, Board),
place(piece(triangle, yellow), center, middle, Board).
これを印刷する必要があります:
[ピース(四角,黄),ピース(丸,赤),ピース(三角,青),ピース(三角,赤),ピース(三角,黄),ピース(丸,青),ピース(四角,青),ピース(丸、黄)、ピース(四角、赤)]