/* Webber Assignment 8 Dan J. Fraser (1219229) */ list_of_k_integers(X, List) :- counter(X,0,List). counter(Size, Count, List) :- list_of_k_integers_that_sum_to_S(Size,Count,List). counter(Size,Count,List) :- plus(Count,1,New_Count), counter(Size,New_Count,List). an_integer_less_than_or_equal_to(X, X) :- . an_integer_less_than_or_equal_to(Int, X) :- plus(Z, 1, Int), an_integer_less_than_or_equal_to(Z,X). list_of_k_integers_that_sum_to_S(0, 0, nil) :- . list_of_k_integers_that_sum_to_S(Size, 0, 0:Tail) :- not Size = 0, plus(New_Size,1,Size), list_of_k_integers_that_sum_to_S(New_Size, 0, Tail). list_of_k_integers_that_sum_to_S(Size, Sum, Y:X ) :- not Size = 0, not Sum = 0, an_integer_less_than_or_equal_to(Sum,Y), plus(New_Size,1,Size), plus(New_Sum,Y,Sum), list_of_k_integers_that_sum_to_S(New_Size, New_Sum, X).