/****** [debug] ?- room([bed,bath,kitchen,study,living,dining],House). House = [kitchen, living, study, dining, bed, bath]. [debug] ?- room([bed,bath,kitchen,study,living,dining],House). House = [bed, dining, kitchen, living, bath, study]. [debug] ?- room([bed,bath,kitchen,study,living,dining],House). House = [dining, living, study, kitchen, bed, bath]. *******/ room(List1,List2) :- room(List1,[],List2). room([],List,List) :- !. room(List1,List2,List3) :- select1(List1,Room,List4), append(List2,[Room],List5), room(List4,List5,List3). select1(List1,Room,List2) :- random(N1), length(List1,L), N2 is L*N1, N3 is ceiling(N2), select2(List1,N3,Room), delete(List1,Room,List2). select2([Room],1,Room) :- !. select2(List1,N1,Room) :- N2 is N1-1, length(List3,N2), append(List3,List4,List1), List4=[Room|_].