Help for this page

Select Code to Download


  1. or download this
    sub pack (@array) returns Array {
        my @unpacked = @array;
        my (@list, @packed);
    ...
        return @packed;
    }
    pack(<a a a a b c c a a d e e e e>).perl.say;
    
  2. or download this
    (defun pack (lista)
        (if (eql lista nil) 
            nil
    ...
              (t (cdr lista))
        )
    )
    
  3. or download this
    pack([],[]).
    pack([X|Xs],[Z|Zs]) :- transfer(X,Xs,Ys,Z), pack(Ys,Zs).
    
    transfer(X,[],[],[X]).
    transfer(X,[Y|Ys],[Y|Ys],[X]) :- X \= Y.
    transfer(X,[X|Xs],Ys,[X|Zs]) :- transfer(X,Xs,Ys,Zs).
    
  4. or download this
    group (x:xs) = let (first,rest) = span (==x) xs
                   in (x:first) : group rest
    group [] = []