値を格納するために配列内のどの位置が使用されるかを計算するプロローグを作成する必要があります。ただし、これらの計算の結果は整数を返す必要があるため、floor/1述語を使用して値の整数を取得しますが、これは私のコードでは機能しません。3 ではなく 3.0 のように、小数点付きの数値を返し続けます。
以下は私のコードです:
assign_value(El, NumberArray, RowNumber, I) :-
ground(El),
Number is NumberArray[El],
Col is I/3,
Row is RowNumber/3*3,
Sum is floor(Col + Row + 1),
subscript(Number, [Sum], El).
assign_value(_, _, _, _).
の結果がSum is floor(Col + Row + 1)
整数になることはなく、その理由はわかりません。誰でもこれで私を助けることができますか?