⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 表操作.txt

📁 Prolog开发的简单的几个人工智能方面的程序.含问题分析报告.
💻 TXT
字号:
Prolog对表的基本操作        
      表在Prolog中很重要,下面里举一下对它的基本操作(都是书上的)
      先定义
      domains
         element = integer
         array = element*
      这样的好处是,可以轻松的改掉基本的element为别的类型,如symbol,而不用去该谓词里的定义
      append——最有用的谓词
      predicates
        append(array,array,array)
      append(H,T,R)定义了这样一种关系,由H和T连接得到表R
      具体规则
      clauses
      append([],T,T).   
      append(T,[],T).  % 说明空表是单位元
      append([X|H],T,[X|R]):-
        append(H,T,R).
      最后一个表达式是关键的,它体现了对表的一种处理方式--添加新元素X到R中——和递归的思想:  
      要把表[X,...]和[Y,...]连成R,可以先把X放到R的表头,再递归的把第一个表剩下的部分和第二个表联成R剩下的部分!(好像说的不太清楚?)
      然后可以试几个例子
      goal
        append([1,2],[3,4],X),write(X),nl,
        append([1,2],Y,[1,2,3,4]),write(Y),nl,
        append(Z,[3,4],[1,2,3,4]),write(Z),nl,
        append(H,T,[1,2,3,4]),write(H,T),nl,  %加个fail试试
        readln(Q).
      size——求表的大小
      可以定义为函数
      predicates
        integer size(array)
      clauses
        size([],0).  % 函数的返回之定义为最有一个变量,空表的长度为0
        size([X|H],RETURN):-
           RETURN = size(H) + 1.
      就可以了。
      goal
        X = size([]),write(X),nl,
        Y = size([1,2,3]),write(Y),nl,
        readln(Q).
      reverse——表得倒序
      predicates
        reverse(array,array)
       clauses
      reverse([],[]).
      reverse(H,[X|T]):-
        append(R,[X],H),
        reverse(R,T).
      最有一句还可以这样:
        reverse([X,Y|H],T):-
           reverse([Y|H],R),
           append(R,[X],T).
     goal
        测试:
        reverse([],X),write(X),nl,
        reverse([1,2,3,4],Y),write(Y),nl,
        readln(Q).
      delete——删除表中指定元素
      predicates
        delete(element,array,array)
      delete(X,H,R)是删除表H中的元素X得到表R
      clauses
       利用append
       delete(X,H,R):-
          append(M,[X|N],H),
          append(M,N,R).
      goal
        测试:
        delete(1,[1],X),write(X),nl,
        delete(2,[1,2,3,4],Y),write(Y),nl,
        readln(Q).
      permutation——表中元素的排列
      predicates
        permutation(array,array)
      permutation(H,T)将得到表H中原素的一种排列到表T
      clauses
        permutation([X],[X]). % 单个元素的排列
        permutation([X|H],T):-
           permutation(H,R),
           append(M,N,R),
           append(M,[X|N],T).
      goal
        测试:打印[1,2,3]的全排列
        permutation([1,2,3],X),
        write(X),nl,
        fail;readln(Q).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -