quadratische Puzzle-Lösung

Frage: Geben Sie bei einer Ganzzahl von n die Zahlen von 1 bis n aus2 so was:

n = 4

Ergebnis ist:

01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07

Wie lösen Sie das Problem (abgesehen von der Lösung, die Sie unter dem folgenden Link finden)?

http://www.programmersheaven.com/mb/CandCPP/81986/81986/problem-in-making-ap-c++-program/?S=B20000

Ich schaue in eine andere Richtung. Bisher versuche ich herauszufinden, ob ich die geordnete Liste der Positionen erhalten kann, die ich ausfüllen muss.

Hier ist, worauf ich schaue: Gibt es eine Möglichkeit, das "fdisp" zu erhalten, um das Problem auf diese Weise zu lösen, anstatt in der Matrix "zu gehen"?

matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
n = len(matrix)

# final disposition wrote by hand: how to get it for arbitrary n?
fdisp = [(0,0), (0,1), (0,2), (0,3), (1,3), (2,3), (3,3), (3,2),
         (3,1), (3,0), (2,0), (1,0), (1,1), (1,2), (2,2), (2,1)]

for val,i in enumerate(fdisp):
    matrix[i[0]][i[1]] = val + 1

def show_matrix(matrix, n):
    for i,l in enumerate(matrix):
        for j in range(n):
            print "%d\t" % matrix[i][j],
        print

show_matrix(matrix, n)

Antworten auf die Frage(5)

Ihre Antwort auf die Frage