通过查看帮助,我发现在SWI-PROLOG中无法定义常量,而有些PROLOG版本是可以的,如以前DOS版本的Turbo PROLOG。但是在书写程序时没有常量就很不方便了,如果使用字面常量,一是程序会使程序很难理解,二是修改的时候很不方便,凡是程序中出现这个常量的地方都要修改,极有可能出现遗漏;如果把常量定义成一元谓词如pi(3.14),那么使用的时候又要先调用一次谓词,如:pi(PI),s is Pi*R*R.显得也很多余。
那么有没有办法在SWI-PROLOG中定义常量呢?当然可以,比如swi-prolog就定义得有符号pi和e,下面就以自定义符号pie=pi+e为例
pie(X):-X is pi+e.
:- arithmetic_function(pie/0).
装入这个文件后,就可以在表达式中使用使用这个常量pie了。
arithmetic_function的功能就是自定义运算符,在定义是需指明自定义函数的个数;在定义谓词时,最后一个个体变元必须是输出参数,用于保存结果。所以在arithmetic_function谓词中指明的参数个数应该比实际的变元个数少1。
阅读全文 »
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
1 #include <algorithm>
2 #include <vector>
3 #include <iterator>
4 #include <iostream>
5 using namespace std;
6 /**
7 * 分析:组合无序,所以不妨设降序排列
8 * 第一个解是[n,n-1,...,n-r+1]
9 * 解的条件是位置i上的元素A[i]应该满足
10 * i+A[i]>=r
11 * 回溯法:对最后一个元素减一
12 * 如果满足条件则得到一个新解
13 * 如果不满足,一直向前回溯到该位满足为止
14 * 然后把满足的那位后面的依次等于前面减一
15 * 从而得到一组新解,然后继续
16 * 如果已经回溯到第一位仍不满足
17 * [...]
阅读全文 »
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
方法很简单
方法一:
1、如果小桶空,从大桶到小桶
2、如果中桶满,从中桶到大桶
3、如果中桶空间能容纳小桶内的,把小桶全倒中桶
4、从小桶倒,把中桶倒满
方法二:完全类似,不过到油的方向为 大桶–>中桶–>小桶
阅读全文 »
function ip2number($ip){
$t=explode(’.',$ip);
$x=0;
for($i=0;$i
阅读全文 »
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
A4Desk是一个不错的Flash站点建站工具,不过生成的swf文件很不爽,主要是1、单击3次就会显示注册对话框;2、会在网站上显示Demo 字样。
如果希望去掉这些信息,按如下步骤操作即可:
阅读全文 »