, , BEGIN... END.
val list1 =
"""992
1010
1005
1112
BEGIN
1086
1244
1107
1121
END
1223
1312
BEGIN
773
990
224
END
1319
1306
1469""".lines.map(_.trim).toList
foldRight .
, foldRight, , END, BEGIN.
case class StripStatus(list:List[String], retaincurrent:Boolean)
list1.foldRight(StripStatus(Nil,false)){ (curElem:String, curStatus:StripStatus) =>
if (curElem == "END")
StripStatus(curStatus.list,true)
else if (curElem == "BEGIN")
StripStatus(curStatus.list,false)
else if (curStatus.retaincurrent)
StripStatus(curElem::curStatus.list, true)
else
curStatus
}.list
foldLeft reverse :
list1.foldLeft(StripStatus(Nil,false)){ (curStatus:StripStatus, curElem:String) =>
if (curElem == "BEGIN")
StripStatus(curStatus.list,true)
else if (curElem == "END")
StripStatus(curStatus.list,false)
else if (curStatus.retaincurrent)
StripStatus(curElem::curStatus.list, true)
else
curStatus
}.list.reverse