Hallo Richard,
das kann man mit einer weiteren Zeile auf n-dimensionale Tabellen
(Tensoren n-ter Stufe) erweitern
In[67]:= Unprotect[Part]
Clear[Part]
Part /: Part[x_List, n_Integer] := First[RotateLeft[x, n]]
Part /: Part[x_List, n__Integer] := Fold[Part, x, {n}] /;
Length[{n}] > 1
Protect[Part]
Out[67]= {Part}
Out[71]= {Part}
Probieren wir eine dreidimensionale Tabelle (Tensor 3-ter Stufe) b:
In[74]:= Clear[b]
b = Table[100 i + 10 j + k, {i, 1, 5}, {j, 1, 4}, {k, 1, 7}]
Out[75]={{{111,112,113,114,115,116,117},{121,122,123,124,125,126,127},
{131,132,133,134,135,136,137},{141,142,143,144,145,146,147}},
{{211,212,213,214,215,216,217},{221,222,223,224,225,226,227},
{231,232,233,234,235,236,237},{241,242,243,244,245,246,247}},
{{311,312,313,314,315,316,317},{321,322,323,324,325,326,327},
{331,332,333,334,335,336,337},{341,342,343,344,345,346,347}},
{{411,412,413,414,415,416,417},{421,422,423,424,425,426,427},
{431,432,433,434,435,436,437},{441,442,443,444,445,446,447}},
{{511,512,513,514,515,516,517},{521,522,523,524,525,526,527},
{531,532,533,534,
535,536,537},{541,542,543,544,545,546,547}}}
In[76]:= b[[0]][[0]][[0]]
Out[76]= 111
Die andere Form von Part, mit einer Sequence von Positionen, liefert das
erste Element nullbasiert
In[77]:= b[[0, 0, 0]]
Out[77]= 111
das letzte Elemtent steht auf i = 5, j = 4, k = 7 einsbasiert, also i =
4, j = 3, k = 6 nullbasiert
In[78]:= b[[4]][[3]][[6]]
Out[78]= 547
In[79]:= b[[4, 3, 6]]
Out[79]= 547
Gruss
Udo.
Richard Gollreiter wrote:
Hallo Udo,
kannst Du diese elegante Lösung auch auf zwei-dimensionale Tabellen
erweitern?
Gruß
Richard
------------------------------------------------------------------