--- /dev/null
+#!/usr/bin/env python
+# -*- python -*-
+
+def how_good (x):
+ pof2 = [1,2,4,8,16]
+ if x in pof2:
+ return 0
+ if x in map (lambda x: x+1, pof2):
+ return -10
+ if x in map (lambda x: x-1, pof2):
+ return -5
+ return -2
+
+
+def better (v1, v2):
+ return abs ((v1 & 0xf) - ((v1 >> 4) & 0xf)) < abs ((v2 & 0xf) - ((v2 >> 4) & 0xf))
+
+
+def foo ():
+ result = {}
+ for i in range (1,17):
+ for j in range (1,17):
+ i_goodness = how_good (i)
+ j_goodness = how_good (j)
+ goodness = i_goodness + j_goodness
+ v = ((i - 1) << 4) | (j - 1)
+
+ key = i * j
+ prev = result.get (key, None)
+ # print "i=%3d j=%3d key=%3d good=%3d v=0x%02x prev=%s" % (i, j, key, goodness, v, prev)
+
+ if not prev:
+ result[key] = (goodness, v)
+ elif goodness > prev[0]:
+ result[key] = (goodness, v)
+ elif goodness == prev[0] and better(v, prev[1]):
+ result[key] = (goodness, v)
+
+ r = result.items ()
+ r.sort ()
+ for k, d in r:
+ print "(%3d, 0x%02x)" % (k, d[1])
+
+
+
+foo ()
+
+