2010-11-22 13 views
7

मुझे एक अभिव्यक्ति लेने के लिए एक नुस्खा देखने और पैटर्न एक्स से मेल खाने वाले प्रत्येक हेड का मूल्यांकन करना याद है, जबकि गैर-मिलान वाले सिर के साथ उप-संपीड़न छोड़कर अनचाहे। मुझे अब यह नुस्खा नहीं मिल रहा है, क्या किसी को ऐसा करने का सही तरीका पता है?अभिव्यक्ति में केवल विशेष हेड प्रकार का मूल्यांकन करना?

उत्तर

5

यह Ted Ersek's Mathematica Tricks under "Clever Little Programs" से है।
पॉइंटर के लिए @TomD पर धन्यवाद।

EvaluatePattern[expr_,pattn_]:=expr/.Pattern[p, pattn]:>With[{eval=p},eval/;True] 

In[368]:= test = HoldForm[7 (1 + 2 - 2^2) (8 + 8)]; 
      EvaluatePattern[test, _Plus] //InputForm 

Out[369]= HoldForm[7*-1*16] 

संपादित

यह [] होल्ड के साथ भी काम करने के लिए लगता है, लेकिन मैं एक गहरी परीक्षण कभी नहीं भाग गया।

+1

इस पर "क्लीवर लिटिल प्रोग्राम" के तहत टेड एर्सेक के गणित ट्रिक्स में चर्चा की गई है। http://www.verbeia.com/mathematica/tips/Tricks.html – tomd

+0

@ टॉम अपडेट किया गया। बहुत धन्यवाद! –

संबंधित मुद्दे