Annotation of micropolis/src/tclx/tcllib/8queens.tcl, revision 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.