```--nextPart2740000.nFKiSreJMb
Content-Type: text/plain;
charset="iso-8859-6"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Well, here is my terrible contribution. It is just a bruteforce and it star=
ts=20
taking a real long time 7*7 and higher. I tried writing some logic to make=
=20
better moves but couldn't really figure out how. In fact, even after readin=
g=20
some other solutions I still can't really figure out how to do this.

I will play around some more and repost if I can figure it out....
######################################

#!/usr/bin/ruby
# PnP.rb :: quiz no.90

def mov_hori(ip, matrix, gridsize)
moves =3D []
if ip-3 >=3D 0 and matrix[ip][ip-3] =3D=3D "."
moves << "l" # left
end
if ip+3 < gridsize and matrix[ip][ip+3] =3D=3D "."
moves << "r" # right
end
moves
end

def mov_vert(ip, matrix, gridsize)
moves =3D []
if ip-3 >=3D 0 and matrix[ip-3][ip] =3D=3D "."
moves << "u" # up
end
if ip+3 < gridsize and matrix[ip+3][ip] =3D=3D "."
moves << "d" # down
end
moves
end

def mov_diag(ip, matrix, gridsize)
moves =3D []
if ip-2 >=3D 0 and ip+2 < gridsize and matrix[ip-2][ip+2] =3D=
=3D "."
moves << "ur" # up-right
end
if ip-2 >=3D 0 and ip-2 >=3D 0 and matrix[ip-2][ip-2] =3D=3D =
"."
moves << "ul" # up-left
end
if ip+2 < gridsize and ip+2 < gridsize and matrix[ip+2][ip+2]=
=20
=3D=3D "."
moves << "dr" # down-right=20
end
if ip+2 < gridsize and ip-2 >=3D 0 and matrix[ip+2][ip-2] =3D=
=3D "."
moves << "dl" # down-left
end
moves
end

def print_matrix(matrix)
matrix.each do |row|
row.each do |cell|
print " %3s " % cell
end
print "\n"
end
exit
end

def do_it(gridsize,ind_p)
moves_offset =3D {
"l"  =3D> [0,-3],
"r"  =3D> [0,3],
"u"  =3D> [-3,0],
"d"  =3D> [3,0],
"ur" =3D> [-2,2],
"ul" =3D> [-2,-2],
"dr" =3D> [2,2],
"dl" =3D> [2,-2]
}

array =3D ["."]
matrix =3D []
totalnums =3D gridsize*gridsize

gridsize.times do
matrix << array * gridsize
end

matrix[ind_p][ind_p] =3D 1
nextint =3D 2

totalnums.times do
hori =3D mov_hori(ind_p, matrix, gridsize)
vert =3D mov_vert(ind_p, matrix, gridsize)
diag =3D mov_diag(ind_p, matrix, gridsize)
moves =3D hori + vert + diag

if moves.length =3D=3D 0
return # try again
end

try_a_move =3D moves[rand(moves.length)]
x,y =3D moves_offset[try_a_move]
ind_p +=3D x
ind_p +=3D y

matrix[ind_p][ind_p] =3D nextint
nextint +=3D 1
if nextint =3D=3D totalnums + 1
print_matrix(matrix)
end
end
end

gridsize =3D ARGV.to_i
ind_p =3D [rand(gridsize), rand(gridsize)] # random initial coords

while 1:
(1..10000).each do
matrix =3D do_it(gridsize,ind_p)
end
puts "10k iterations..."
end
######################################
=2Dd
=2D-=20
darren kirby :: Part of the problem since 1976 :: http://badcomputer.org
"...the number of UNIX installations has grown to 10, with more expected..."
=2D Dennis Ritchie and Ken Thompson, June 1972

--nextPart2740000.nFKiSreJMb
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (GNU/Linux)

iD8DBQBE3910wPD5Cr/3CJgRAmY+AJ9KGUsWCzBHWrNHPtKK950/RmtZ8wCfeQq7
3lnpChr8mDT2CTzWnU04744=
=OvqR
-----END PGP SIGNATURE-----

--nextPart2740000.nFKiSreJMb--

```