Oct 11th, 2008 作者 hugsnow
通过查看帮助,我发现在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。
标签:原创
分类 程序 | 没有评论 »
^p 或 ^n :(编辑模式)自动补全
^O:切换到命令模式完成后返回编辑模式
=a{ :重排选定的代码块
zo:展开代码折叠
zc:关闭代码折叠
set encoding=编码 : 改变文件的编码方式(先设置再打开)
set fileencoding=编码 : 把当前的编码转换为新的编码方式
手把手教你把Vim改装成一个IDE编程环境(图文)
分类 电脑 | 没有评论 »
Jul 21st, 2008 作者 hugsnow
本文由抱雪(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 * 则所有解都已经找到,终止
18 */
19 vector <vector <int> > comb(int n,int r){
20 vector <vector <int> > vv;
21 vector <int> tmp(r);
22 int i;
23 bool f=false;
24 for(i=0;i<r;i++)tmp[i]=n-i;
25 vv.push_back(tmp);
26 while(true){
27 tmp[r-1]--;
28 for(i=r-1;i>=0;i--){
29 if(tmp[i]+i>=r)
30 break;
31 else{
32 if(i==0){
33 f=true;
34 break;
35 }
36 tmp[i-1]--;
37 if(tmp[i-1]+i-1>=r){
38 for (int j=i; j < r; j++) {
39 tmp[j]=tmp[j-1]-1;
40 }
41 }
42 }
43 }
44 if(f)break;
45 vv.push_back(tmp);
46 }
47 return vv;
48 }
49
标签:原创
分类 程序 | 没有评论 »
Jul 10th, 2008 作者 hugsnow
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
设有m个传教士和m个野人来到河边,打算乘一只船从右岸渡到左岸去。该船最大负载能力为n人,在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去呢?
继续阅读 »
分类 程序 | 没有评论 »
猎人带着一框草莓,一只羊和一条狼要过河。但是只有一条小船。条件如下:
* 一次只可以载一样东西。
* 如果让羊和草莓在一起,而猎人不在旁边的话,羊就会把草莓只掉。
* 如果让狼和羊在一起,而猎人不在旁边的话,狼就会把羊吃掉。 继续阅读 »
分类 程序 | 没有评论 »
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
方法很简单
方法一:
1、如果小桶空,从大桶到小桶
2、如果中桶满,从中桶到大桶
3、如果中桶空间能容纳小桶内的,把小桶全倒中桶
4、从小桶倒,把中桶倒满
方法二:完全类似,不过到油的方向为 大桶–>中桶–>小桶
继续阅读 »
标签:原创
分类 程序 | 没有评论 »
Jun 23rd, 2008 作者 hugsnow
審詳春日莫他求,時正節真氣自酬,
五時二刻驚蟄是,十時四刻清明頭,
立夏一日三時六,芒種一日九時收,
二日二時二小暑,二日七時四刻秋,
白露三朝單六刻,寒露三朝六時周,
立冬三朝十一二,大雪細細兩雙流,
小寒四日九時六,五日三時打春牛,
節遇子時加一日,此為捷法記心頭。
量天尺
立春五日起庚由, 惊蛰倒退三时首。
一时一刻清明节, 立夏九时三刻收。
芒种两日退一时, 小暑三日五时求。
五日退三立秋节, 白露六日退一周。
寒露六日四时到, 立冬六日七时求。
大雪六日又四时, 小寒五日九时收。
一掌诀
前九年,二月中, 本年元旦日相同。
月月十五对初一, 千年万载不差宗。
标签:资料
分类 周易 | 没有评论 »
Jun 23rd, 2008 作者 hugsnow
一个阴历月:29.530588天
回归年:365.24219879天(365日5小时48分45.5秒)
恒星年:365.25636天(365天6时9分9.5秒)
分类 周易 | 没有评论 »
Jun 23rd, 2008 作者 hugsnow
来自 齐鲁周易网,原帖地址:http://www.qlzhouyi.com/ShowArticle2.asp?ArticleID=195
一、 推算年干支口诀
掌上推算年干支,支子花甲起根源。
阳支都是旬开始,天干为甲尾四年。
隔位逆推十年正,顺推年尾五零三。
逐支加减六十数,掌上推算千万年。
继续阅读 »
分类 周易 | 没有评论 »
Jun 19th, 2008 作者 hugsnow
function ip2number($ip){
$t=explode('.',$ip);
$x=0;
for($i=0;$i<4;$i++){
$x = $x*256+$t[$i];
}
return $x;
}
function number2ip($num){
$t=$num;
$a=array();
for($i=0;$i<4;$i++){
$x=$t%256;
if($x<0)$x+=256;
array_unshift($a, $x);
$t = intval($t/256);
}
return implode('.',$a);
}
标签:原创
分类 程序 | 没有评论 »