http://www.perlmonks.org?node_id=638214


in reply to Yet Another Rosetta Code Problem (Perl, Ruby, Python, Haskell, ...)

My take on a slightly more concise Ruby version:
s = "ZBBBCZZ" x = s.scan(/((.)\2*)/).map{|v|v[0]}
  • Comment on Re: Yet Another Rosetta Code Problem (Perl, Ruby, Python, Haskell, ...)
  • Download Code

Replies are listed 'Best First'.
Re^2: Yet Another Rosetta Code Problem (Perl, Ruby, Python, Haskell, ...)
by Anonymous Monk on Sep 11, 2007 at 08:20 UTC
    Generic version in the D programming language
    $ cat test4.d && gdc test4.d -o test4 && echo "----" && ./test4 import std.stdio; T[][] group(T)(T[] array) { T[][] res; foreach (index, elem; array) { if (index == 0 || elem != array[index-1]) res~=(T[]).init; res[$-1]~=elem; } return res; } void main() { writefln(group("ZBBBCZZ")); } ---- [Z,BBB,C,ZZ]