2つの数値があります。N
とK
と名前を付けましょう。N
の2の累乗を使用してK
と書きます。
たとえば、N = 9
およびK = 4
の場合、N
はN = 1 + 2 + 2 + 4
(2^0 + 2^1 + 2^1 + 2^2
)。
私のプログラムはN = [1,2,2,4]
。
私はC++に慣れています。この問題をPrologで解決する方法が見つかりません。どんな助けでも感謝します!
my_power_of_two_bound(U,P):-
U #>= 2^P,
P #=< U,
P #>=0.
power2(X,Y):-
Y #= 2^X.
クエリ:
?- N=9,K=4,
length(_List,K),
maplist(my_power_of_two_bound(N),_List),
maplist(power2,_List,Answer),
chain(Answer, #=<),
sum(Answer, #=, N),
label(Answer).
次に:
Answer = [1, 2, 2, 4],
K = 4,
N = 9