> geg: eine einfache Liste mit nat. Zahlen
>
> etwa {8,8,8,1,2,1,8,8,7,7,7,1,1,2,2,3}
>
> gesucht: eine Prozdur so, dass ich erhalte:
>
> {{8,8,8},{1},{2},{1},{8,8},{7,7,7},{1,1},{2,2},{3}}
Das Thema tauchte in dieser oder jener Form in den Programmierwettbewerben
früherer (vor Version 3.0) Mathematica-Konferenzen auf, und kann mehr oder
weniger elegant gelöst werden. Die zugrundeliegende Funktionalität erweist
sich als so nützlich, daß sie nun fest eingebaut ist:
In[2]:= Split[{8,8,8,1,2,1,8,8,7,7,7,1,1,2,2,3}]
Out[2]= {{8, 8, 8}, {1}, {2}, {1}, {8, 8}, {7, 7, 7}, {1, 1}, {2, 2}, {3}}
In[3]:= ?Split
Split[list] splits list into sublists consisting of runs of identical
elements. Split[list, test] treats pairs of adjacent elements as identical
whenever applying the function test to them yields True.
Beispiele weiterer interessanter Anwendungen von Split finden Sie in
den Unterlagen zu meinem Vortrag "Programming Bits" am IMS'97, siehe
<http://www.mathconsult.ch/math/stuff/>.
Roman Mäder
|