File:  [Micropolis - Activity] / micropolis / src / tclx / tcllib / 8queens.tcl
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed Mar 11 09:08:51 2020 UTC (6 years, 4 months ago) by root
Branches: donhopkins, MAIN
CVS tags: activity, HEAD
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

unix.superglobalmegacorp.com

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