गणितज्ञ 66 58 51
वर्तमान समाधान
कैले द्वारा योगदान के लिए संक्षिप्त धन्यवाद।
Cases[Partition[#,3,1],{a_,b_,c_}/;(a-b) (b-c)<0⧴b]&
Partition[#,3,1] तीनों को ढूंढता है।
(a-b) (b-c)<0सच यदि और केवल यदि है bनीचे है a, cया इसके बाद के संस्करण a, c। और अंतर के संकेतों को देखता है। एक स्थानीय चरम {-1,1}या तो वापस आ जाएगी {1,-1}।
उदाहरण
Cases[Partition[#, 3, 1], {a_, b_, c_} /; (a - b) (b - c) < 0 :> b] &[{1, 2, 1}]
Cases[Partition[#, 3, 1], {a_, b_, c_} /; (a - b) (b - c) < 0 :> b] &[{0, 1, 0, 1, 0}]
Cases[Partition[#, 3, 1], {a_, b_, c_} /; (a - b) (b - c) < 0 :> b] &[{}]
Cases[Partition[#, 3, 1], {a_, b_, c_} /; (a - b) (b - c) < 0 :> b] &[{9, 10, 7, 6, 9, 0, 3, 3, 1, 10}]
{२}
{१, ०, १}
{}
{१०, ६, ९, ०, १}
इससे पहले समाधान
यह उदाहरण सभी त्रिगुणों (उदाहरणों से उत्पन्न Partition) को दर्शाता है और यह निर्धारित करता है कि मध्य तत्व दोनों चरम सीमाओं से कम है या चरम सीमा से अधिक है।
Cases[Partition[#,3,1],{a_,b_,c_}/;(b<a∧b<c)∨(b>a∧b>c)⧴b]& ;
पहला उपाय
यह त्रिगुणों को ढूँढता है, और अंतरों के संकेतों को देखता है। एक स्थानीय चरम {-1,1}या तो वापस आ जाएगी {1,-1}।
Cases[Partition[#,3,1],x_/;Sort@Sign@Differences@x=={-1,1}⧴x[[2]]]&
उदाहरण
Cases[Partition[#,3,1],x_/;Sort@Sign@Differences@x=={-1,1}:>x[[2]]]&[{9, 10, 7, 6, 9, 0, 3, 3, 1, 10}]
{१०, ६, ९, ०, १}
विश्लेषण :
Partition[{9, 10, 7, 6, 9, 0, 3, 3, 1, 10}]
{{9, 10, 7}, {10, 7, 6}, {7, 6, 9}, {6, 9, 0}, {9, 0, 3}, {0, 3, 3}, { 3, 3, 1}, {3, 1, 10}}
% संबंधित पूर्ववर्ती रेखा से परिणाम को संदर्भित करता है।
Differences/@ %
{{1, -3}, {-3, -1}, {-1, 3}, {3, -9}, {-9, 3}, {3, 0}, {0, -2}, {-2, 9}}
Sort@Sign@Differences@x=={-1,1}{{9, 10, 7}, {10, 7, 6}, {7, 6, 9}, {6, 9, 0}, {9, 0, 3}, {0, 3, से त्रिगुणों की पहचान करता है। 3}, {3, 3, 1}, {3, 1, 10}} जैसे कि मतभेदों के संकेत (-, 0, +) में a -1और a होते हैं 1। वर्तमान मामले में वे हैं:
{{9, 10, 7}, {7, 6, 9}, {6, 9, 0}, {9, 0, 3}, {3, 1, 10}}
इनमें से प्रत्येक मामले के लिए, x, x[[2]]दूसरे शब्द को संदर्भित करता है। वे सभी स्थानीय मैक्सिमा और मिनीमा के होंगे।
{१०, ६, ९, ०, १}