jazdec2.mws

A Knight Tour Problem

Inicializacia

>    with(ListTools); with(plots)

>    knightJumps := [[2, -1], [1, -2], [-1, -2], [-2, -1], [-2, 1], [-1, 2], [1, 2], [2, 1]]

succesors

Popis

s, n, position -> zoznam vsetkych moznych nasledovnikov z pozicie 'position' na sachovnici 's' velkosti 'n' x 'n'

Implementacia

>    successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...
successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...
successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...
successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...
successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...
successors := proc (s, n, position) local moves, onBoard; moves := map(proc (x) position+x end proc,knightJumps); onBoard := select(proc (x) 0 < x[1] and 0 < x[2] and x[1] <= n and x[2] <= n end proc,m...

numberOfSuccessors

Popis

s, n, position -> pocet vsetkych moznych nasledovnikov z pozicie 'position' na sachovnici 's' velkosti 'n' x 'n'

Implementacia

>    numberOfSuccessors := proc (s, n, position) nops(successors(s,n,position)) end proc

mina

Popis

s, n, position -> tah(y) s najmensim poctom nasledovnikov

Implementacia

>    mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...
mina := proc (s, n, position) local localSuccessors, localNumbersOfSuccessors, minimum; localSuccessors := successors(s,n,position); localNumbersOfSuccessors := map(proc (x) numberOfSuccessors(s,n,x) e...

mabst

Popis

destination, successorlist -> najvzdialenejsi nasledovnici

Implemenatacia

>    mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...
mabst := proc (destination, successorlist) local vectors, distances, maximum; vectors := map(proc (x) destination-x end proc,successorlist); distances := map(proc (x) linalg[dotprod](x,x) end proc,vect...

improvedWarnsdorff

Popis

n -> riesenie 'A knight tour problem'

Implementacia

>    improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...
improvedWarnsdorff := proc (n) local s, destination, position, localMina, stepNumber; s := Matrix(n,n); destination := [round(n/2)-1/2, round(n/2)-1/2]; position := [1, 1]; s[1,1] := 1; for stepNumber ...

Priklady

Priklad 1

>    M1 := improvedWarnsdorff(9);

M1 := Matrix(%id = 14429208)

Priklad 2

>    M2 := convert(improvedWarnsdorff(50), array):

>    plot3d(M2[x, y], x=1..50, y=1..50);

[Maple Plot]

>    densityplot(M2[x, y], x=1..50, y=1..50, grid=[50, 50]);

[Maple Plot]