<div class="notebook"> <div class="nb-cell markdown" name="md1"> Answering stackoverflow question https://stackoverflow.com/q/47911117/874024 </div> <div class="nb-cell program" name="p1"> :- use_module(library(clpfd)). skyscrape_row(Left, Right, Heights) :- constraint_view(0, Heights, LHeights), sum(LHeights, #=, Left), reverse(Heights, Heights_), constraint_view(0, Heights_, RHeights), sum(RHeights, #=, Right). constraint_view(_, [], []). constraint_view(Top, [V|Vs], [R|Rs]) :- R #<==> V #> 0 #/\ V #> Top, Max #= max(Top, V), constraint_view(Max, Vs, Rs). </div> <div class="nb-cell query" name="q1"> L=[A,B,C,D], L ins 1..4, all_different(L), skyscrape_row(2,3,L), label(L). </div> </div>