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
給出它們的初始值?