Set consolidation: Difference between revisions

added Bracmat
m (oops)
(added Bracmat)
Line 20:
 
'''See also:'''
=={{header|Bracmat}}==
 
<lang bracmat>( ( consolidate
= a m z mm za zm zz
. ( removeNumFactors
= a m z
. !arg:?a+#%*?m+?z
& !a+!m+removeNumFactors$!z
| !arg
)
& !arg
: ?a
%?`m
( %?z
& !m
: ?
+ ( %@?mm
& !z:?za (?+!mm+?:?zm) ?zz
)
+ ?
)
& consolidate$(!a removeNumFactors$(!m+!zm) !za !zz)
| !arg
)
& (test=.out$(!arg "==>" consolidate$!arg))
& test$(A+B C+D)
& test$(A+B B+D)
& test$(A+B C+D D+B)
& test$(H+I+K A+B C+D D+B F+G+H)
);</lang>
Output:
<pre>A+B C+D ==> A+B C+D
A+B B+D ==> A+B+D
A+B C+D B+D ==> A+B+C+D
H+I+K
A+B
C+D
B+D
F+G+H
==>
F+G+H+I+K
A+B+C+D</pre>
=={{header|C}}==
<lang c>#include <stdio.h>
483

edits