作业帮 > 综合 > 作业

这个用mathematica的模式匹配怎么写?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 06:22:17
这个用mathematica的模式匹配怎么写?
四个元素中如果前两个元素中的某个与后两个元素中的某个重复,就删除这两个,比如{1,2,1,1}就输出{2,1},{4,9,9,6}就输出{4,6},{0,1,3,1}就输出{0,3} 想了半天没想到后来用函数式替代他了.如果这个用mathematica的模式匹配功能,怎么实现这个函数呢?
这样?:
{{1, 2, 1, 1}, {4, 9, 9, 6}, {0, 1, 3, 1}} /. {a_, b_, a_, d_} | {a_, b_, d_, a_} | {b_, a_, a_, d_} | {b_, a_, d_, a_} -> {b, d}
这里我是直接书写了,再长一点的其实可以借助Permulations之类的函数.

再问: 这样子可以 除了列举有没有别的办法 比如用MemberQ检测一元素如果它在左边两个元素中有,右边也有 就各在左右删除一次 但是苦于MemberQ检测的是未知元素啊 有什么好办法没
再答: 你MemberQ都用上了还算什么模式匹配啊喂不会是想用什么 a_?MemberQ 吧?要是那样的话,把你写的那个函数稍微改改放到 a_?后面不就行了。本来这些东西之间就没什么明确界限。