Hi, I just spent two good hours over my implementation of an algorithm to arrange some PointFs in an array so that the distance between P[i] and P[i+1] is the smallest possible among all points P[j], j > i. I don't want to bother you with details (well, I think I already did, sorry) but the comparison of two points is not only a function of these two points but also of some other reference point. So I used a line like this:
Swap $aPoints[iInd + 1], $aPoints[GetNearest(iInd)] which means: get me the index of the nearest point to $aPoints[iInd] and swap $aPoints[iInd + 1] with the value there. This effectively sorts my array into the desired order (For iInd = 0 To $aPoints.Max - 1). Well, not really. Because Swap is not immune to side effects induced by the expressions to swap. The wiki states that implicitly by saying that Swap A, B is equivalent to tmp = A A = B B = tmp So my code really was: tmp = $aPoints[iInd + 1] $aPoints[iInd + 1] = $aPoints[GetNearest(iInd)] $aPoints[GetNearest(iInd)] = tmp which leads to an erroneous array because GetNearest() is a function of $aPoints[iInd + 1] which changed between the two invocations. [ The funny thing is that, due to the nature of GetNearest(), the result of the above three lines for all iInd is that the array remains unchanged. ] To cut a long story short, is this by design? Do you think it's worth changing that behaviour (it wouldn't break any sane use of Swap)? If not it's equivalently fine. I'll add a clear warning to the wiki, then. Regards, Tobi -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Gambas-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/gambas-user
