|
|
1.1 root 1: #
2: # Eight Queens in Tcl
3: #
4: # by Karl Lehenbauer, 23 Nov 1990
5: #
6: #-----------------------------------------------------------------------------
7: # $Id: 8queens.tcl,v 2.0 1992/10/16 04:51:36 markd Rel $
8: #-----------------------------------------------------------------------------
9: #
10: proc none_attacking {rank position} {
11: global queens
12: loop i 1 $rank {
13: set j $queens([expr {$rank - $i}])
14: if {($j==$position-$i) || ($j==$position) || ($j==$position+$i)} {
15: return 0
16: }
17: }
18: return 1
19: }
20:
21: proc solution {} {
22: global queens
23: echo $queens(1) $queens(2) $queens(3) $queens(4) $queens(5) $queens(6) $queens(7) $queens(8)
24: }
25:
26: proc x8queens {rank} {
27: global queens
28: set queens($rank) 1
29: loop i 1 9 {
30: if [none_attacking $rank $i] {
31: set queens($rank) $i
32: if {$rank != 8} {
33: x8queens [expr $rank+1]
34: } else {
35: solution
36: return
37: }
38: }
39: }
40: }
41:
42: proc 8queens {} {
43: x8queens 1
44: }
45:
46: global interactiveSession
47: if !$interactiveSession 8queens
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.