3
walls(This) :-
append(This, NewMap),
length(NewMap, N),
numWalls(NewMap, W),
W >= N/10.
numWalls([], _, 0).
numWalls('w'|Tail, W) :-
W is W1 + 1,
numWalls(Tail, W1).
numWalls(_|Tail, W):-
numWalls(Tail, W).
我一行一行地註釋掉,直到我取出numWalls(NewMap,W)行爲止。 append平坦化一個二維數組,長度返回平展地圖的適當長度。我們需要計算一個'w'在列表中出現的次數,如果超過10%的列表是'w',則返回True。計算序言中列表中某個字符的出現次數
walls(Maps) :-
append(Maps, NewMap),
length(NewMap, N),
print(NewMap),
numWalls(NewMap, W),
print(W) .
numWalls([], 0).
numWalls(['w'|Tail], W) :-
numWalls(Tail, W1),
W1 is W-1.
numWalls([_|Tail], W):-
numWalls(Tail, W).
「ERROR:是/ 2:論點是沒有充分實例化」 貌似錯誤是我的說法?
固定括號後,參數沒有被充分實例化。我認爲還需要改變W是W1 + 1到W是W1-1。 – theB3RV
@ theB3RV嘗試切換遞歸調用和添加行。 – dasblinkenlight
切換它們擺脫了錯誤,我拿出W> = N/10,並在它的位置放置一個打印(W)語句,它不會打印出W。 – theB3RV