Annotation of micropolis/src/tclx/tcllib/8queens.tcl, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.