Я пытаюсь научить себя программировать с использованием Tcl. (Я хочу поближе познакомиться с языком, чтобы понять чужой код - шахматы SCID)
Задача, которую я поставил перед собой, чтобы мотивировать свое обучение Tcl, - решить проблему 8 ферзей.
Мой подход к созданию программы состоит в том, чтобы последовательно «прототипировать» решение.
Так.
Я до того, чтобы вложить цикл для удержания позиции q в строке 2
внутри цикла for, удерживающего позицию q в строке 1
Вот мой код
set allowd 1
set notallowd 0
for {set r1p 1} {$r1p <= 8} {incr r1p } {
puts "1st row q placed at $r1p"
;# re-initialize r2 'free for q placemnt' array after every change of r1 q pos:
for {set i 1 } {$i <= 8} {incr i} { set r2($i) $allowd }
for { set r2($r1p) $notallowd ; set r2([eval $r1p-1]) $notallowd ;
set r2([eval $r1p+1]) $notallowd ; set r2p 1} {$r2p <= 8} {
incr r2p ;# end of 'next' arg of r2 forloop
}
;# commnd arg of r2 forloop placed below:
{puts "2nd row q placed at $r2p"
}
}
Моя проблема в том, что когда я запускаю код, интерпретатор прерывается с фатальной ошибкой:
"неправильный #args должен быть для начала теста следующей команды.
Я просмотрел свой код несколько раз и не вижу, что пропустил ни один из аргументов цикла for.