0
使用Martin Richards编写的按位运算分析the eight queens puzzle的解决方案,但我很难理解基本的MCPL函数语法,尽管咨询了the language manual。
下面给出的是完整的程序:了解MCPL函数调用
GET "mcpl.h"
STATIC count, all
FUN try
: ?, =all, ? => count++
: ld, cols, rd => LET poss = ~(ld | cols | rd) & all
WHILE poss DO
{ LET bit = poss & -poss
poss -:= bit
try((ld|bit)<<1, cols|bit, (rd|bit)>>1)
}
FUN start : =>
all := 1
FOR n = 1 TO 12 DO
{ count := 0
try(0, 0, 0)
writef("There are %5d solutions to %2d-queens problem\n", count, n)
all := 2*all + 1
}
RETURN 0
我无法理解的是功能try
的前两行,即问号?
语法和参数的传递(和处理)。
手动读取
问号(?)可以被用作与未定义的值的常数。
以及
模式在函数的定义中使用。 [...]问号(?)或空白模式将与任何参数值匹配。
这是什么语法意味着参数以及如何ld
,cols
和rd
给出它们的初始值?