|
2.3.11 Wiederholte Muster
Wiederholte Muster
Mit mehrfachen Blanks wie x__ können Sie Muster angeben, in denen Folgen beliebiger Ausdrücke auftreten können. Mit den Mathematica-Musterwiederholungsoperatoren .. und ... lassen sich Muster konstruieren, in denen Formen beliebig oft wiederholt werden können. So repräsentiert zum Beispiel f[a..] einen beliebigen Ausdruck der Form f[a], f[a, a], f[a, a, a] usw.
Das Muster f[a..] erlaubt dem Argument a, beliebig oft wiederholt zu werden.
In[1]:= Cases[{ f[a], f[a, b, a], f[a, a, a] }, f[a..]]
Out[1]= 
Dieses Muster erlaubt eine beliebige Anzahl von a-Argumenten, gefolgt von einer beliebigen Anzahl von b-Argumenten.
In[2]:= Cases[{ f[a], f[a, a, b], f[a, b, a], f[a, b, b] }, f[a.., b..]]
Out[2]= 
Hier kann jedes Argument entweder a oder b sein.
In[3]:= Cases[{ f[a], f[a, b, a], f[a, c, a] }, f[(a | b)..]]
Out[3]= 
Mit .. und ... lassen sich Wiederholungen eines beliebigen Musters darstellen. Wenn das Muster benannte Teile enthält, dann müssen die Teile in jedem Fall identisch sein.
Hier wird eine Funktion definiert, deren Argument aus einer Liste von Paaren bestehen muß.
In[4]:= v[x:{{_, _}..}] := Transpose[x]
Die Definition gilt in diesem Fall.
In[5]:= v[{{a1, b1}, {a2, b2}, {a3, b3}}]
Out[5]= 
Bei dieser Definition müssen die zweiten Elemente aller Paare dieselben sein.
In[6]:= vn[x:{{_, n_}..}] := Transpose[x]
Die Definition gilt in diesem Fall.
In[7]:= vn[{{a, 2}, {b, 2}, {c, 2}}]
Out[7]= 
|