Chciałbym wyodrębnić argumenty z wystąpień nierówności. Poniższe nie działa, jakikolwiek pomysł, dlaczego i jak to naprawić?Wzorzec dopasowania nierówności
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Chciałbym wyodrębnić argumenty z wystąpień nierówności. Poniższe nie działa, jakikolwiek pomysł, dlaczego i jak to naprawić?Wzorzec dopasowania nierówności
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
Inequality[1,Less,x,Less,2] /. HoldPattern[Inequality[a_,_,b_,_,c_]] -> {a, b, c}
Out: {1, x, 2}
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]]};
ponieważ trzeba wymienić wszystkie nierówności z równości w coś takiego - http://pastebin.com/wN2ENmL6 –
Ponadto, można to zrobić:
Nierówność [1, Less, X, mniej, 2] /. Odciski @ nierówności [a_, _ C_, _ e_] -> {a, c, e}
ADL
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
@rcollyer Tak, ocenia się wzór. Spróbuj tego przykładu ** MatchQ [a/b, _/_] // Trace ** –
To by mnie zniechęciło przez wiele godzin, próbując uruchomić ten schemat. – rcollyer