s=: '';5 7;'';'';1 2;2 7;2;8;5 s ┌┬───┬┬┬───┬───┬─┬─┬─┐ ││5 7│││1 2│2 7│2│8│5│ └┴───┴┴┴───┴───┴─┴─┴─┘ j -.&.>~ </./ |: (,.~j),(,|."1) (;s),.(#&>s)#j=. i.#s ┌┬─────┬─────┬┬───┬───────┬─┬─────┬───┐ ││4 5 7│4 5 6││1 2│1 8 2 7│2│1 5 8│7 5│ └┴─────┴─────┴┴───┴───────┴─┴─────┴───┘
(;s),.(#&>s)#j are the relationships in ordered pair form; (,|."1) of that catenates the reversed ordered pairs; and the rest of the code puts the information back into the form in which s is specified. Repeated application of this processes is the transitive closure (friend of my friend is also my friend, *ad infinitum*). On Thu, Sep 12, 2013 at 3:44 PM, Richard Gaylord <[email protected]>wrote: > here's some code in the Wolfram Programming Language (the language > underlying Mathematica) illustring the use of pattern matching. > > > > Society is a list of the attribute lists of people. As an illustration, we > will create a society consisting of eight people, each with two attributes. > In each person's attribute list, > the first element (which is a number) represents the person's name , > > the second element which is a list of numbers) is a list of the names of > the members of the person's social network. > > > society = {{1, {5, 7}}, > {2, {}}, > {3, {}}, > {4, {1, 2}}, > {5, {2, 7}}, > {6, {2}}}, > {7, {8}}, > {8, {5}}} > > We can modify society so that anyone who is in another person's social > network includes that person in their own social network (i.e., reciprocal > social connections). > > symSoc = society /. > {a_Integer, b_} :> {a, Union[b, Cases[society, {x_, {___, a, ___}} :> x]]} > > symSoc = {{1, {4, 5, 7}}, > {2, {4, 5, 6}}, > {3, {}}, > {4, {1, 2}}, > {5, {1, 2, 7, 8}}, > {6, {2}}, > {7, {1, 5, 8}}, > {8, {5, 7}}} > > how would this be done in J? > > note: a pdf of the note set on the Wolfram Language in which the > expressions for society and symSoc appear on p. 42 can be downloaded at > > http://library.wolfram.com/infocenter/MathSource/5216/ > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
