0

有限数の要素でいくつかのリストを初期化する必要がありますが、すべて同じです。

fill( 0, [], _ ) :- !.
fill( Index, [Value|List], Value ) :-
    NextIndex is Index - 1,
    fill( NextIndex, List, Value ).

無限再帰と失敗の結果を避けるために、カットは必須です。

ルール #2 を変更しようとしましたが、予想される解決策を示した後、目標は失敗します。

fill( Index, [Value|List], Value ) :-
    Index > 0,
    NextIndex is Index - 1,
    fill( NextIndex, List, Value ).

使い方:

?- fill( 7, AllFalse, false ).
AllFalse = [false, false, false, false, false, false, false].

?-
4

2 に答える 2