![]() ![]() |
Hosted by![]() |
|
|
Solve A 15-Puzzle Of A Cut-Up ImageHere's a scrambled image; see if you can put it right again..:
Source:Here's the source for the puzzle:
proc puzzle {image} {
set ind 0
set w [expr [image width $image]/4]
set h [expr [image height $image]/4]
foreach i {3 1 6 2 5 7 0 13 4 11 8 9 14 10 12} {
[image create photo $i] copy $image -from [set x [expr $w*($i%4)]] [set y [expr $h*($i/4)]] [expr $x+$w] [expr $y+$h]
button .$i -image $i -highlightthickness 0 -command "hit .$i" -bd 1
grid .$i -row [expr $ind/4] -column [expr $ind % 4]
incr ind
}
}
proc hit {win} {
global empty
array set info [grid info $win]
if {abs($empty(x)-$info(-column)) + abs($empty(y)-$info(-row)) == 1} {
grid $win -row $empty(y) -column $empty(x)
array set empty "x $info(-column) y $info(-row)"
}
}
set empty(y) 3; set empty(x) 3
set data {....}
image create photo earth -data $data
unset data
puzzle earth
|