|
|
Micropolis Activity
#
# Eight Queens in Tcl
#
# by Karl Lehenbauer, 23 Nov 1990
#
#-----------------------------------------------------------------------------
# $Id: 8queens.tcl,v 1.1.1.1 2020/03/11 09:08:51 root Exp $
#-----------------------------------------------------------------------------
#
proc none_attacking {rank position} {
global queens
loop i 1 $rank {
set j $queens([expr {$rank - $i}])
if {($j==$position-$i) || ($j==$position) || ($j==$position+$i)} {
return 0
}
}
return 1
}
proc solution {} {
global queens
echo $queens(1) $queens(2) $queens(3) $queens(4) $queens(5) $queens(6) $queens(7) $queens(8)
}
proc x8queens {rank} {
global queens
set queens($rank) 1
loop i 1 9 {
if [none_attacking $rank $i] {
set queens($rank) $i
if {$rank != 8} {
x8queens [expr $rank+1]
} else {
solution
return
}
}
}
}
proc 8queens {} {
x8queens 1
}
global interactiveSession
if !$interactiveSession 8queens
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.