You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prolog实现生成全0填充N行M列二维矩阵的方法

Prolog实现全0填充二维矩阵生成谓词

需求说明

需要定义谓词matrix(N, M, MX),满足以下要求:

  • N为矩阵行数,M为矩阵列数,MX为生成的N行M列的全0填充二维列表
  • 执行查询?- matrix(2, 3, Mx)时,返回唯一结果Mx = [[0,0,0],[0,0,0]],无其他可选匹配结果

实现代码

首先定义生成单行全0列表的辅助谓词,再通过映射生成完整矩阵,末尾添加裁剪确保无多余解:

% 辅助谓词:生成长度为M的全0列表
zero_row(M, Row) :-
    length(Row, M),
    maplist(=(0), Row).

% 主谓词:生成N行M列的全0矩阵
matrix(N, M, MX) :-
    length(MX, N),
    maplist(zero_row(M), MX),
    !.

如果你的Prolog实现支持lambda语法,也可以不用单独定义辅助谓词,简化写法如下:

matrix(N, M, MX) :-
    length(MX, N),
    maplist(\Row^(length(Row, M), maplist(=(0), Row)), MX),
    !.

调用验证

执行查询后的输出和要求完全匹配:

?- matrix(2, 3, Mx).
Mx = [[0,0,0],[0,0,0]] ? ; 
no

内容的提问来源于stack exchange,提问作者Bence Makula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:24:02