SIZE = 5 plateau = [True,]*(SIZE**2) print "Plateau:" for i in xrange(0,SIZE**2,SIZE): print ','.join(map(lambda d: "%2d" %d, range(SIZE**2)[i:i+SIZE])) print def test(f): print ["%2d=%s" %(f(i),plateau[f(i)]) for i in xrange(SIZE)], print '=', print sum([plateau[f(i)] is True for i in xrange(SIZE)])==SIZE WALK_FCT = {"diag_1":lambda i:i+i*SIZE, "diag_2":lambda i: (SIZE)*(SIZE-(i+1))+(i+1)-1, "hor_N":lambda n: lambda i: n*SIZE+i, "ver_N":lambda n: lambda i: i*SIZE+n} ALL_TESTS = [WALK_FCT["diag_1"], WALK_FCT["diag_2"]] ALL_TESTS.extend(WALK_FCT["hor_N"](n) for n in xrange(SIZE)) ALL_TESTS.extend(WALK_FCT["ver_N"](n) for n in xrange(SIZE)) for f in ALL_TESTS: test(f)