Sort[] accuracy problem
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1130] Sort[] accuracy problem
- From: "Wm. Martin McClain" <wmm at chem.wayne.edu>
- Date: Wed, 17 May 1995 02:29:13 -0400
- Organization: Wayne State University, College of Science
Dear mathgroupers: I have a list of 3D points that I want to "alphabetize", but only up to a certain accuracy. I thought I could do this with Sort[points,logicFn[#1,#2]], where logicFn[#1,#2] replaces the default comparison function (#1<#2)&. However, it seems that alphabetization, which happens automatically with the default comparison, is disabled when you supply your own comparison. My question, in brief, is ?Can I restore it? Here is what I mean by "alphabetize": In[298]:= Sort[{{5, 1}, {4, 3}, {1, 2}, {4, 1}}] Out[298] = {{1, 2}, {4, 1}, {4, 3}, {5, 1}} The points {x,y} are sorted by ascending x, but when x does not decide, they are sorted by ascending y. Here is the kind of thing that is giving me trouble: In[299]:= Sort[{{5.00, 1}, {4.00, 3}, {1.00, 2}, {4.01, 1}}] Out[299] = {{1.00, 2}, {4.00, 3}, {4.01, 1}, {5.00, 1}} But I would like it to treat 4.00 and 4.01 as the same for the purposes of sorting, so that it returns the approximately alphebetized list {{1.00, 2}, {4.01, 1}, {4.00, 3}, {5.00, 1}} where the difference between 1 and 3 is treated as more important than the difference between 4.00 and 4.01.I tried Sort[list,(Round[#2*10]<Round[#1*10])&], but it seems to think that #n refers to the whole point {x,y}, rather than just to x (or on the second round, just to y), so the comparison becomes neither True nor False and no sorting is done. Any ideas? (With this group there are always ideas...) Thanks in advance- Martin McClain