# Need help with a homework

**URL:** <https://swi-prolog.discourse.group/t/need-help-with-a-homework/5942>\
**Category:** Help!\
**Created:** [November 16, 2022, 2:39am UTC](https://swi-prolog.discourse.group/t/need-help-with-a-homework/5942 "2022-11-16T02:39:41Z")\
**Posts on this page:** 1\
**Showing post:** 15

<div class="post-metadata">

**Author:** ![brebs](https://avatars.discourse-cdn.com/v4/letter/b/e9c0ed/32.png) [@brebs](https://swi-prolog.discourse.group/u/brebs)\
**Post date:** [November 19, 2022, 6:43pm UTC](https://swi-prolog.discourse.group/t/need-help-with-a-homework/5942/15 "2022-11-19T18:43:09Z")

</div>

It’s not actually using select/3:

> **Code is hiding here, waiting to be clicked...**
>
> ```prolog
> subset_sum(0, _, []).
> subset_sum(Sum, SourceLst, [Elem|SumLst]) :-
> select_after(Elem, SourceLst, After),
> Sum0 is Sum - Elem,
> compare(Comp, Sum0, 0),
> subset_sum_(Comp, Sum0, After, SumLst).
> 
> subset_sum_(=, 0, _, []).
> subset_sum_(>, Sum1, SourceLst, SumLst) :-
> subset_sum(Sum1, SourceLst, SumLst).
> 
> select_after(Elem, [H|T], After) :-
> select_after_(T, H, Elem, After).
>     
> select_after_(T, H, H, T).
> select_after_([H|T], _, E, R) :-
> select_after_(T, H, E, R).
> 
> ```

Results:

```prolog
?- subset_sum(7, [10,7,3,4,2,1], L).
L = [7] ;
L = [3, 4] ;
L = [4, 2, 1] ;
false.

?- subset_sum(0, [10,7,3,4,2,1], L).
L = [] ;
false.

```

Note the tweaked [argument order](https://swi-prolog.discourse.group/t/split-list/4836/8).

---

_[View the full topic](https://swi-prolog.discourse.group/t/need-help-with-a-homework/5942)._
