On Mittwoch, 9. Juli 2003 12:46, Peter Klamser wrote:
> Hallo,
>
> ich würde gerne das Format einer Liste vorgeben, die einer Funktion
> übergeben werden darf.
>
> sp[polygon_?((ListQ[#1] && Length[#1] == 3) || (NumericQ[#1] && Length[#2]
> > 2)) &]:=Block[{BlaBlaBla},BlaBlaBla=polygon]
>
> Der Polygon soll das folgende Format haben:
>
> Entweder
>
> {9, {{0, 0, 1000}, {500, 0, 1000}, {500, 250, 1000}, ___}}
>
> oder
>
> {{0, 0, 1000}, {500, 0, 1000}, {500, 250, 1000}, ___}
>
> wobei ___ für eine beliebige Menge von Vektoren {x,y,z} steht.
>
> 1. Frage
>
> Was mach Mathematica bei Patternmatching mit _?(BlaBlaBla)&: Map, MapAll,
> Apply oder was?
@
(d.h., f_?t matched genau dann wenn t@f True ist)
Siehe auch:
http://documents.wolfram.com/v5/TheMathematicaBook/PrinciplesOfMathematica/Patterns/2.3.5.html
Oder einen Mathematica-Kursus besuchen.
>
> 2. Frage
>
> Wie könnte die Funktion aussehen, die die obige Bedingung erfüllt?
Z.B.:
sp[poly:{_?NumericQ, {_Integer, _Integer, _Integer}..} | {{_, _, _}..}] :=
Block[{BlaBlaBla}, BlaBlaBla = poly]
MfG,
Rolf Mertig
Mertig Consulting
http://www.mertig.com
http://www.mathxls.com
>
> Danke :-)
>
> Freundlicher Gruß
>
> Peter Klamser