自分自身が(非常に単純な)問題をますます絞り込んでいます。私は、リストの最初の3つの要素を与えるlistsplit([H1,H2,H3|T], H1,H2,H3, T).
リストのすべての要素に操作を行う方法
:
のは、私は、この操作を持っているとしましょう。私はプログラム、セル、入力リストを移動し、リストのすべての要素に(少なくとも1つの操作!!)したい。
だから私のようなものがあります:私は、私はリストを移動するためにそのように行くの例として見てきた多くのを使用していたので、私はそのコードを持っている
cells(Input, Result):-
cellsBody(Input, [], Result).
cellsBody([],Result,Result).
cellsBody([Head|Input], Acc, [Headd|Result]):-
listsplit(Input,H1,H2,H3,_),
cellsBody(Input, [OutputBody|Acc], Result).
を。彼らは身体から頭を分離して行く。私はこれがプロローグでどのように行われているのか見当たりません。私は変数名を変更しようとしました(他の言語でもそうですが)、私は可能な限り単純に問題を解決しようとしました。
どのようにしてリストを移動し、すべての要素(私が選択した要素、先頭から先頭)に操作を行うのですか?
編集:私はarchieveしたいものの例:
私がそうで、オキソ、oxxxo、oxoxoなどの入力リストを取得します。最初の3つの要素、次に3つの要素などにルールを適用し、その間に私が返すリストにルールの結果を追加します(これがアキュムレータを使用しようとしている理由です) 。
は、[メタ述語タグ]:の家族を参照してください単一要素の関係を説明し、その後、' maplistを使用/ 3 'のリストに関係を適用するuch要素。 – mat
私のレベルからかなり離れて、悲しそうに。これまでのプロローグは、あらゆるツールを利用できるようにして、何かを使う方法を知らないように感じています。くそった。しかし、ちょうどその場合には、私の頭脳を包囲しようとしています。 – keont
* single *要素の関係を記述することさえできない場合、* multiple *要素のより一般的な場合をどのように攻撃すると思いますか?単一の要素の関係を記述してみてください。私の推測では、このことから、あなたが説明したい関係について深刻な誤解があることがわかるでしょう。私の推測では、あなたが記述する方法で実装できる関係(「リストを移動してすべての要素に操作を加える」)ではないということです。そのような場合、あなたはそのような操作が* one *要素のように見えると言うことができますか? – mat