Advertisement
f0rsakenbg

15042019-SplitListIntoMulti

Apr 15th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. Ls = [3, 5, 1, 7, 6, 9, - 9, 6, 81]
  2. & K = 6
  3. & split (Ls, K, nil, nil, Ls1, Ls2)
  4. ;
  5.  
  6. split ([], _, Ls1Acc, Ls2Acc, Res1, Res2) :-
  7. !
  8. & rev (Ls1Acc, [], Res1)
  9. & rev (Ls2Acc, [], Res2)
  10. ;
  11.  
  12. split ([Head | Tail], K, Ls1Acc, Ls2Acc, Ls1, Ls2) :-
  13. Head < K
  14. & !
  15. & Ls1AccNew = [Head | Ls1Acc]
  16. & split (Tail, K, Ls1AccNew, Ls2Acc, Ls1, Ls2)
  17. ;
  18.  
  19. split ([Head | Tail], K, Ls1Acc, Ls2Acc, Ls1, Ls2) :-
  20. Head > K
  21. & !
  22. & Ls2AccNew = [Head | Ls2Acc]
  23. & split (Tail, K, Ls1Acc, Ls2AccNew, Ls1, Ls2)
  24. ;
  25.  
  26. split ([_ | Tail], K, Ls1Acc, Ls2Acc, Ls1, Ls2) :-
  27. split (Tail, K, Ls1Acc, Ls2Acc, Ls1, Ls2)
  28. ;
  29.  
  30. rev ([], Acc, Acc) :-
  31. !
  32. ;
  33.  
  34. rev ([Head | Tail], Acc, Res) :-
  35. AccNew = [Head | Acc]
  36. & rev (Tail, AccNew, Res)
  37. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement