2010-10-03 19 views

Odpowiedz

8
Inequality[1,Less,x,Less,2] /. HoldPattern[Inequality[a_,_,b_,_,c_]] -> {a, b, c} 


Out: {1, x, 2} 
+0

Zastanawiałem się, dlaczego 'HoldPattern' jest wymagany, a' Trace' ujawnia dlaczego: 'Nierówność [a, _, b _, _, c_]' staje się 'Nierówność [a_, _, c_] && Inequality [ c_, _, e_] '. Więc nie pasuje już do tego, czego się spodziewasz. – rcollyer

+0

@rcollyer Tak, ocenia się wzór. Spróbuj tego przykładu ** MatchQ [a/b, _/_] // Trace ** –

+0

To by mnie zniechęciło przez wiele godzin, próbując uruchomić ten schemat. – rcollyer

0

Dlaczego nie używasz standardowego dostępu do podwyrażania?

expr = Nierówność [1, Mniej, x, Mniej, 2]; {a, c, e} = {wyr [[1]], wyrażenie [[3]], wyrażenie [[5]]};

+0

ponieważ trzeba wymienić wszystkie nierówności z równości w coś takiego - http://pastebin.com/wN2ENmL6 –

1

Ponadto, można to zrobić:

Nierówność [1, Less, X, mniej, 2] /. Odciski @ nierówności [a_, _ C_, _ e_] -> {a, c, e}

ADL

Powiązane problemy