Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1.  
  2.  
  3. fun grupper 0 x = [x]
  4. | grupper n x =if length(x) > n then (List.take(x,n))::(grupper n (List.drop(x,n))) else [x];
  5.  
  6.  
  7.  
  8. fun removeelement (x::xs) y = if x = y then (removeelement xs y) else x::(removeelement xs y)
  9. | removeelement [] _ = []
  10.  
  11. fun klassdel2 k = map (fn x => [[x],(removeelement k x )]) k
  12.  
  13. fun klassdelsingels x = map (fn x => [x]) x;
  14.  
  15. fun klassdelmid (k as x::xs) y = let val len = length k; in if x <> y then if len > 2 andalso len mod 2 = 0 then [(grupper 2 k)]@(klassdelmid (List.drop(k,1)@[x]) y ) else [[k]] else []
  16. end
  17. | klassdelmid [] _ = [];
  18.  
  19. fun klassdelpar x = let
  20. val len = length x div 2;
  21. val nyliste =List.drop(x,len)@List.take(x,len); in (klassdelmid x (List.last(x)))@(klassdelmid nyliste (List.last(nyliste)))
  22. end
  23.  
  24.  
  25. fun member(x,ys) = List.exists (fn y => x = y) ys;
  26.  
  27.  
  28. (* offtrack
  29. fun klassdel1 (k as x::xs) n =
  30. let
  31. val len = length k;
  32. val midlist = List.drop(k,n);
  33. val endlist = List.drop(k,(len-n));
  34. val nyliste =List.drop(x,len)@List.take(x,len);
  35.  
  36. in [(List.take(k,n)),(List.filter (fn x => not (member(x,endlist))) midlist),(endlist)] @(klassdel1 [nyliste n)
  37.  
  38. end
  39. | klassdel1 _ _ = [] )*)
  40.  
  41. fun klassdel1sub (k as x::xs) = let
  42. val len = length k;
  43. val midlist = List.drop(k,1);
  44. val endlist = List.drop(k,(len-1));
  45. val nyliste =List.drop(x,len)@List.take(x,len);
  46. in if length k > 3 then [[x],(List.filter (fn x => not (member(x,endlist))) midlist),(endlist)]
  47. else []
  48. end
  49.  
  50. | klassdel1sub _ = []
  51.  
  52.  
  53. fun klassdel1 k = let
  54. val mid = (length k) div 2;
  55. val len = length k;
  56. val nyliste =List.drop(k,len div 2)@List.take(k,len div 2 ); in
  57. if length (k) > 4 then k else k
  58. end
  59.  
  60.  
  61. (* FUCKING LORTE KOMBANITORIK TO DO:
  62.  
  63. lav enderne, samt nyliste ender *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement