プロローグの基本的なプログラミングを学んでいますが、いくつかの問題があります。私はプロローグでappendを使ってリストから最初のX個の要素を削除しています(Xは入力した任意の乱数です)。リストが空で、リストに含まれている以上のものを要求したときに、プログラムは問題に遭遇します。それは[]を返すべきです。入力例: 取り外し可能な(R、[1,2,3、A]、5)リストが空のときにプロローグプログラムを続行しないようにするには
2
A
答えて
1
removable(A,B,N) :- length(X,N), append(X, A, B).
このようlength
とappend
の使用を避けるようにしてください。それはあなたのコードを多くのリストを通して繰り返します。
代わりに、これを試してみてください。
removable(0,R,R).
removable(X,[],[]) :- X > 0.
removable(X,[H|T],R) :- X > 0, Y is X - 1, removable(Y,T,R).
私は入力が右に左と出力にある規則に従うためにあなたの引数の順序を変更しましたのでご注意ください。
あなたの呼び出しは次のようになります。
?- removable(5,[1,2,3,a],R), write(R).
[]
を出力します。
-1
プロローグでは、再帰を使用して作業し、リストの先頭と末尾を処理してください。インスタンス化された3つのすべてのvaiablesがあるので、プロローグでaを使用してeのような用語をインスタンス化することはできません。
removable(A,B,N) :-
removable(A,B,N,0). % This is just another call with accumulator.
removable(L,L,Acc,Acc). %This is your base case, When Acc and Acc will equal then prolog will find one succesive branch.
removable([],[],_,_). %This base case says that no matter what values Accs have if a list is emepty then substitue other also with empty list and return result.
removable(R,[H|T],N,Acc) :- %This predicates removes H and keeps counting when removed elements equal to N then first(base case) will succeed.
NewAcc is Acc + 1,
removable(R,T,N,NewAcc).
。
関連する問題
- 1. 私のリストが空のときにプロローグプログラムが停止しない
- 2. EditTextが空のときにAlertDialogが終了しないようにする
- 3. インターネットに接続していないときにアプリケーションが実行されないようにする方法
- 4. CentOSのVMとDockerが接続できないときにホストに接続しようとしたとき
- 5. 最初にノードを追加しようとすると、リストが空に見えるのはなぜですか?
- 6. DataGridViewが空の行をBindingSourceに追加しないようにする
- 7. タイトルが空のときにPopOverを起動させないようにする
- 8. データベースにアクセスしようとしたときにPHPページが空白になる
- 9. 変更が永続的になるようにリストを追加するには?
- 10. 行列がRのリストにならないようにする方法は?
- 11. ユーザーがテキストボックスを空のままにして処理を続行するときにヒントを設定するにはどうすればよいですか?
- 12. nodejsで接続プールを実装しようとしているときに接続が未定義になる
- 13. 空のパケットを送信して接続をタイムアウトしないようにする
- 14. リモートファイルを取得するときに接続が遅いためにアプリがクラッシュしないようにする
- 15. セルをマージするときに空白行を追加しないようにジュピターノートを設定する方法
- 16. 空の行列や空の列や行を持つ行列を操作しないようにするにはどうすればよいですか?
- 17. jsgridが空のときに新しい行を追加するように制限する
- 18. メソッドでは、私のリストには要素がありますが、リストが空になったときに
- 19. 車とリストがないようにコードを書くには?
- 20. リストをアイテムに追加するときにボタンがアクションを実行しない
- 21. 一致がないときに空のデータフレームを取得しないようにするにはどうすればよいですか?
- 22. Apache Camel:ファイルの書き込み中に空きがないようにする
- 23. textAreaに空白が収縮しないようにする
- 24. 2Dリストを印刷して、各リストが空白で新しい行にあるようにする方法(「」または[]なし)
- 25. 空きがない場合にのみ別の列にリストがオーバーフローする
- 26. R:データフレームの行のリストに等しくない行の長さ(空の値)と
- 27. 無効な応答を修正した後にスキャナが続行できないようにする
- 28. クラスオープニング中括弧の後に空行ができないようにするルールはありますか?
- 29. パンダでは、空のリストをどのように置き換えることができますか?
- 30. fgets()を使用して2行が空のときにプログラムを停止しようとしています