On Mon, 12 Mar 2018 13:17:15 +0000, Robin Becker wrote: > It's possible to generalize the cantor pairing function to triples, but > that may not give you what you want. Effectively you can generate an > arbitrary number of triples using an iterative method. My sample code > looked like this > > > import math > > def cantor_pair(k1,k2): > return (((k1+k2)*(k1+k2+1))>>1) + k2 > > def inverse_cantor_pair(z): > w = int((math.sqrt(8*z+1)-1)/2.0) > t = (w*(w+1))>>1 > j = z - t > i = w - j > return i, j
I definitely want to avoid any round trips through float in order to use sqrt. But thanks for the code, I'll certainly steal it, er I mean study it for future reference :-) -- Steve -- https://mail.python.org/mailman/listinfo/python-list