This might be a good candidate for recursive solution. But much faster iterative solution is shown below:
import scala.collection.mutable.ListBuffer
def unflatten[T](list:List[T]):List[List[T]]={
val uniq = list.removeDuplicates
val c = new ListBuffer[List[T]]()
var uniqv = uniq
while(!uniqv.isEmpty){
c.append(list.filter(_==uniqv.head))
uniqv=uniqv.tail
}
c.toList
}
val x = List(1,2,3,1,2,3,1,2,3,1,2,3)
println(unflatten(x))
Output:
List(List(1, 1, 1, 1), List(2, 2, 2, 2), List(3, 3, 3, 3))
My thoughts on tackling IT complexity by breaking it into atomic components. and I term it lego oriented solution, LOS for short.
Tuesday, October 13, 2009
Subscribe to:
Post Comments (Atom)
Blog Archive
-
▼
2009
(13)
-
▼
October
(13)
- P12: Decode run-length encoding
- P11: Modified run-length encoding that includes on...
- Installing Eclipse, Scala and Groovy in Windows 7
- P10: Run-length encoding of a list.
- P09: Pack consecutive duplicates of list elements...
- P08: Eliminate consecutive duplicates of list elem...
- P07: Flatten a list
- P06: Is a list palindrome
- P03 - P05: Find nth element, length, reverse a list
- How to simply sum values in a Map in Scala
- Best Note Taking Tools
- P02: Find the last but one element of a list.
- Over all these years of Software development, I ca...
-
▼
October
(13)
No comments:
Post a Comment