<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>方寸心思 &#187; 程序</title>
	<atom:link href="http://www.luoxf.net/wordpress/archives/category/pc/devlop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.luoxf.net/wordpress</link>
	<description>欢迎光临罗小飞(抱雪)的网上家园</description>
	<pubDate>Thu, 25 Dec 2008 15:40:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Ruby 匿名函数的使用</title>
		<link>http://www.luoxf.net/wordpress/archives/242</link>
		<comments>http://www.luoxf.net/wordpress/archives/242#comments</comments>
		<pubDate>Wed, 19 Nov 2008 14:45:49 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/archives/242</guid>
		<description><![CDATA[定义：proc1=lambda {&#124;a,b&#8230;&#124; 代码块}  #Ruby 1.8proc1=-&#62;{&#124;a,b&#8230;&#124; 代码块}  #Ruby 1.9使用：proc1.call(a,b,&#8230;)
]]></description>
			<content:encoded><![CDATA[<p>定义：<br />proc1=lambda {|a,b&#8230;| 代码块}  #Ruby 1.8<br />proc1=-&gt;{|a,b&#8230;| 代码块}  #Ruby 1.9<br />使用：<br />proc1.call(a,b,&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/242/feed</wfw:commentRss>
		</item>
		<item>
		<title>快速掌握一个语言最常用的50%</title>
		<link>http://www.luoxf.net/wordpress/archives/222</link>
		<comments>http://www.luoxf.net/wordpress/archives/222#comments</comments>
		<pubDate>Mon, 27 Oct 2008 17:10:43 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<category><![CDATA[资料]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/archives/222</guid>
		<description><![CDATA[原作者:孟岩 原帖地址:http://blog.csdn.net/myan/archive/2008/10/25/3144661.aspx
现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度：其一，粗粗看看语法，就撸起袖子开干，边查Google边学习；其 二是花很多时间完整地把整个语言学习一遍，做到胸有成竹，然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显，不仅浪费了时间， 偏离了目标，而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家，反而忘了自己原本是要解决问题来的。 第一种路子也有问题，在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码，写出来的东西肯定不入流。说穿新鞋走老路，新瓶装旧酒，那都是小问 题，真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。由于通常开发阶段的测试完备程度有限，这些垃圾代码往往能通过这个阶段，从而潜 伏下来，在后期成为整个项目的毒瘤，反反复复让后来的维护者陷入西西弗斯困境。


实际上语言学习有一定规律可循，对于已经掌握一门语言的 开发者来说，对于一般的语言，完全可以以最快的速度，在几天至一周之内掌握其最常用的50%，而且保证路子基本正宗，没有出偏的弊病。其实真正写程序不怕 完全不会，最怕一知半解的去攒解决方案。因为你完全不会，就自然会去认真查书学习，如果学习能力好的话，写出来的代码质量不会差。而一知半解，自己动手土 法炼钢，那搞出来的基本上都是废铜烂铁。比如错误处理和序列化，很多人不去了解“正路子”，而是凭借自己的一知半解去攒野路子，这是最危险的。因此，即使 时间再紧张，这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发，即使有问题，也基本不会伤及项目大体。而开发者本人则可以安步当车，慢 慢在实践中提高自己。
以下列出一个学习提纲，主要针对的是有经验的人，初学者不合适。这个提纲只能用于一般的庸俗编程语言学习，目前在 流行编程语言排行榜上排前20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言，或是某个软件中的二次开发语言，这里的建议未必合适。还是那 句话，仅供参考。
1. 首先了解该语言的基本数据类型，基本语法和主要语言构造，主要数学运算符和print函数的使用，达到能够写谭浩强程序设计书课后数学习题的程度；
2. 其次掌握数组和其他集合类的使用，有基础的话可以理解一下泛型，如果理解不了也问题不大，后面可以补；
3. 简单字符串处理。所谓简单，就是Regex和Parser以下的内容，什么查找替换，截断去字串之类的。不过这个阶段有一个难点，就是字符编码问题。如果理解不了，可以先跳过，否则的话最好在这时候把这个问题搞定，免留后患；
4. 基本面向对象或者函数式编程的特征，无非是什么继承、多态、Lambda函数之类的，如果有经验的话很快就明白了；
5. 异常、错误处理、断言、日志和调试支持，对单元测试的支持。你不一定要用TDD，但是在这个时候应该掌握在这个语言里做TDD的基本技能；
6. 程序代码和可执行代码的组织机制，运行时模块加载、符号查找机制，这是初学时的一个难点，因为大部分书都不太注意介绍这个极为重要的内容；
7. 基本输入输出和文件处理，输入输出流类的组织，这通常是比较繁琐的一部分，可以提纲挈领学一下，搞清楚概念，用到的时候查就是了。到这个阶段可以写大部分控制台应用了；
8. 该语言如何进行callback方法调用，如何支持事件驱动编程模型。在 现代编程环境下，这个问题是涉及开发思想的一个核心问题，几乎每种语言在这里都会用足功夫，.NET的delegate，Java的anonymous inner class，Java 7的closure，C++OX的 tr1::function/bind，五花八门。如果能彻底理解这个问题，不但程序就不至于写得太走样，而且对该语言的设计思路也能有比较好的认识；
9. 如果有必要，可在这时研究regex和XML处理问题，如无必要可跳过；
10. 序列化和反序列化，掌握一下缺省的机制就可以了；
11. 如果必要，可了解一下线程、并发和异步调用机制，主要是为了读懂别人的代码，如果自己要写这类代码，必须专门花时间严肃认真系统地学习，严禁半桶水上阵；
12. 动态编程，反射和元数据编程，数据和程序之间的相互转化机制，运行时编译和执行的机制，有抱负的开发者在这块可以多下些功夫，能够使你对语言的认识高出一个层面；
13. 如果有必要，可研究一下该语言对于泛型的支持，不必花太多时间，只要能使用现成的泛型集合和泛型函数就可以了，可在以后闲暇时抽时间系统学习。需要注意的是，泛型技术跟多线程技术一样，用不好就成为万恶之源，必须系统学习，谨慎使用，否则不如不学不用；
14. 如果还有时间，最好咨询一下有经验的人，看看这个语言较常用的特色features是什么，如果之前没学过，应当补一下。比如Ruby的block interator, Java的dynamic proxy，C# 3的LINQ和extension method。没时间的话，我认为也可以边做边学，没有大问题。
15. 有必要的话，在工作的闲暇时间，可以着重考察两个问题，第一，这个语言有哪些惯用法和模式，第二，这个语言的编译/解释执行机制。
至 此语言的基本部分就可以说掌握了，之后是做数据库、网络还是做图形，可以根据具体需求去搞，找相应的成熟框架或库，边做边学，加深理解。对于一个庸俗语 言，我自己把上面的内容走一遍大概要花2-3周时间，不能算很快，但也耽误不了太多事情，毕竟不是每个月都学新语言。掌握了以上的内容，就给练武术打好了 基本功，虽然不见得有多优秀，但是肯定是根正苗红，将来不必绕大弯子。就算是临时使用的语言，把上面这个提纲精简一下，只看蓝色重体字的部分，大致能在几 天到一周内搞定，不算是太耗时，而且写出来的代码不会太不靠谱。
以上提纲未设及内存模型。对于C/C++，这个问题很重要，要放在显著位置来考虑，但对于其他语言，这个问题被透明化了，除非你要做hardcore项目，否则不必太关注。
]]></description>
			<content:encoded><![CDATA[<p>原作者:孟岩 原帖地址:http://blog.csdn.net/myan/archive/2008/10/25/3144661.aspx</p>
<p>现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度：其一，粗粗看看语法，就撸起袖子开干，边查Google边学习；其 二是花很多时间完整地把整个语言学习一遍，做到胸有成竹，然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显，不仅浪费了时间， 偏离了目标，而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家，反而忘了自己原本是要解决问题来的。 第一种路子也有问题，在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码，写出来的东西肯定不入流。说穿新鞋走老路，新瓶装旧酒，那都是小问 题，真正严重的是这样的程序员可以在短时间内堆积大量充满缺陷的垃圾代码。由于通常开发阶段的测试完备程度有限，这些垃圾代码往往能通过这个阶段，从而潜 伏下来，在后期成为整个项目的毒瘤，反反复复让后来的维护者陷入西西弗斯困境。</p>
<p><span id="more-222"></span>
</p>
<p>实际上语言学习有一定规律可循，对于已经掌握一门语言的 开发者来说，对于一般的语言，完全可以以最快的速度，在几天至一周之内掌握其最常用的50%，而且保证路子基本正宗，没有出偏的弊病。其实真正写程序不怕 完全不会，最怕一知半解的去攒解决方案。因为你完全不会，就自然会去认真查书学习，如果学习能力好的话，写出来的代码质量不会差。而一知半解，自己动手土 法炼钢，那搞出来的基本上都是废铜烂铁。比如错误处理和序列化，很多人不去了解“正路子”，而是凭借自己的一知半解去攒野路子，这是最危险的。因此，即使 时间再紧张，这些内容也是必须首先完整了解一遍的。掌握这些内容之后进入实际开发，即使有问题，也基本不会伤及项目大体。而开发者本人则可以安步当车，慢 慢在实践中提高自己。</p>
<p>以下列出一个学习提纲，主要针对的是有经验的人，初学者不合适。这个提纲只能用于一般的庸俗编程语言学习，目前在 流行编程语言排行榜上排前20的基本上都是庸俗语言。如果你要学的是LISP之类非庸俗语言，或是某个软件中的二次开发语言，这里的建议未必合适。还是那 句话，仅供参考。</p>
<p>1. 首先<strong><font color="#0000ff">了解该语言的基本数据类型，基本语法和主要语言构造</font></strong>，主要数学运算符和print函数的使用，达到能够写谭浩强程序设计书课后数学习题的程度；</p>
<p>2. <strong><font color="#0000ff">其次掌握数组和其他集合类的使用</font></strong>，有基础的话可以理解一下泛型，如果理解不了也问题不大，后面可以补；</p>
<p>3. 简单字符串处理。所谓简单，就是Regex和Parser以下的内容，什么查找替换，截断去字串之类的。不过这个阶段有一个难点，就是字符编码问题。如果理解不了，可以先跳过，否则的话最好在这时候把这个问题搞定，免留后患；</p>
<p>4. <strong><font color="#0000ff">基本面向对象或者函数式编程的特征</font></strong>，无非是什么继承、多态、Lambda函数之类的，如果有经验的话很快就明白了；</p>
<p>5. <strong><font color="#0000ff">异常、错误处理、断言、日志和调试支持，对单元测试的支持</font></strong>。你不一定要用TDD，但是在这个时候应该掌握在这个语言里做TDD的基本技能；</p>
<p>6. <strong><font color="#0000ff">程序代码和可执行代码的组织机制，运行时模块加载、符号查找机制</font></strong>，这是初学时的一个难点，因为大部分书都不太注意介绍这个极为重要的内容；</p>
<p>7. <strong><font color="#0000ff">基本输入输出和文件处理，输入输出流类的组织</font></strong>，这通常是比较繁琐的一部分，可以提纲挈领学一下，搞清楚概念，用到的时候查就是了。到这个阶段可以写大部分控制台应用了；</p>
<p>8. <strong><font color="#0000ff">该语言如何进行callback方法调用，如何支持事件驱动编程模型。</font></strong>在 现代编程环境下，这个问题是涉及开发思想的一个核心问题，几乎每种语言在这里都会用足功夫，.NET的delegate，Java的anonymous inner class，Java 7的closure，C++OX的 tr1::function/bind，五花八门。如果能彻底理解这个问题，不但程序就不至于写得太走样，而且对该语言的设计思路也能有比较好的认识；</p>
<p>9. 如果有必要，可在这时研究regex和XML处理问题，如无必要可跳过；</p>
<p>10. <strong><font color="#0000ff">序列化和反序列化</font></strong>，掌握一下缺省的机制就可以了；</p>
<p>11. 如果必要，可了解一下线程、并发和异步调用机制，主要是为了读懂别人的代码，如果自己要写这类代码，必须专门花时间严肃认真系统地学习，严禁半桶水上阵；</p>
<p>12. 动态编程，反射和元数据编程，数据和程序之间的相互转化机制，运行时编译和执行的机制，有抱负的开发者在这块可以多下些功夫，能够使你对语言的认识高出一个层面；</p>
<p>13. 如果有必要，可研究一下该语言对于泛型的支持，不必花太多时间，只要能使用现成的泛型集合和泛型函数就可以了，可在以后闲暇时抽时间系统学习。需要注意的是，泛型技术跟多线程技术一样，用不好就成为万恶之源，必须系统学习，谨慎使用，否则不如不学不用；</p>
<p>14. 如果还有时间，最好咨询一下有经验的人，看看这个语言较常用的特色features是什么，如果之前没学过，应当补一下。比如Ruby的block interator, Java的dynamic proxy，C# 3的LINQ和extension method。没时间的话，我认为也可以边做边学，没有大问题。</p>
<p>15. 有必要的话，在工作的闲暇时间，可以着重考察两个问题，第一，这个语言有哪些惯用法和模式，第二，这个语言的编译/解释执行机制。</p>
<p>至 此语言的基本部分就可以说掌握了，之后是做数据库、网络还是做图形，可以根据具体需求去搞，找相应的成熟框架或库，边做边学，加深理解。对于一个庸俗语 言，我自己把上面的内容走一遍大概要花2-3周时间，不能算很快，但也耽误不了太多事情，毕竟不是每个月都学新语言。掌握了以上的内容，就给练武术打好了 基本功，虽然不见得有多优秀，但是肯定是根正苗红，将来不必绕大弯子。就算是临时使用的语言，把上面这个提纲精简一下，只看蓝色重体字的部分，大致能在几 天到一周内搞定，不算是太耗时，而且写出来的代码不会太不靠谱。</p>
<p>以上提纲未设及内存模型。对于C/C++，这个问题很重要，要放在显著位置来考虑，但对于其他语言，这个问题被透明化了，除非你要做hardcore项目，否则不必太关注。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/222/feed</wfw:commentRss>
		</item>
		<item>
		<title>在SWI-PROLOG中用自定义运算符定义常量</title>
		<link>http://www.luoxf.net/wordpress/archives/209</link>
		<comments>http://www.luoxf.net/wordpress/archives/209#comments</comments>
		<pubDate>Sat, 11 Oct 2008 13:32:56 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<category><![CDATA[原创]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/archives/209</guid>
		<description><![CDATA[通过查看帮助，我发现在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。
]]></description>
			<content:encoded><![CDATA[<p>通过查看帮助，我发现在SWI-PROLOG中无法定义常量，而有些PROLOG版本是可以的，如以前DOS版本的Turbo PROLOG。但是在书写程序时没有常量就很不方便了，如果使用字面常量，一是程序会使程序很难理解，二是修改的时候很不方便，凡是程序中出现这个常量的地方都要修改，极有可能出现遗漏；如果把常量定义成一元谓词如pi(3.14)，那么使用的时候又要先调用一次谓词，如：pi(PI),s is Pi*R*R.显得也很多余。<br />
那么有没有办法在SWI-PROLOG中定义常量呢?当然可以，比如swi-prolog就定义得有符号pi和e，下面就以自定义符号pie=pi+e为例</p>
<p>pie(X):-X is pi+e.<br />
:- arithmetic_function(pie/0).</p>
<p>装入这个文件后，就可以在表达式中使用使用这个常量pie了。<br />
arithmetic_function的功能就是自定义运算符，在定义是需指明自定义函数的个数；在定义谓词时，最后一个个体变元必须是输出参数，用于保存结果。所以在arithmetic_function谓词中指明的参数个数应该比实际的变元个数少1。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/209/feed</wfw:commentRss>
		</item>
		<item>
		<title>从n个数字中取r个数的组合算法，并输出组合(C++)</title>
		<link>http://www.luoxf.net/wordpress/archives/191</link>
		<comments>http://www.luoxf.net/wordpress/archives/191#comments</comments>
		<pubDate>Sun, 20 Jul 2008 16:07:50 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<category><![CDATA[原创]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=191</guid>
		<description><![CDATA[本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/

 1 #include &#60;algorithm&#62;
 2 #include &#60;vector&#62;
 3 #include &#60;iterator&#62;
 4 #include &#60;iostream&#62;
 5 using namespace std;
 6 /**
 7  * 分析：组合无序，所以不妨设降序排列
 8  * 第一个解是[n,n-1,...,n-r+1]
 9  * 解的条件是位置i上的元素A[i]应该满足
10  * i+A[i]&#62;=r
11  * 回溯法：对最后一个元素减一
12  * 如果满足条件则得到一个新解
13  * 如果不满足，一直向前回溯到该位满足为止
14  * 然后把满足的那位后面的依次等于前面减一
15  * 从而得到一组新解,然后继续
16  * 如果已经回溯到第一位仍不满足
17  * [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);">本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/</span></p>
<pre>
<font color="#804040"> 1 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;algorithm&gt;</font>
<font color="#804040"> 2 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;vector&gt;</font>
<font color="#804040"> 3 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;iterator&gt;</font>
<font color="#804040"> 4 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;iostream&gt;</font>
<font color="#804040"> 5 </font><font color="#804040"><b>using</b></font> <font color="#2e8b57"><b>namespace</b></font> std;
<font color="#804040"> 6 </font><font color="#0000ff">/*</font><font color="#0000ff">*</font>
<font color="#804040"> 7 </font><font color="#0000ff"> * 分析：组合无序，所以不妨设降序排列</font>
<font color="#804040"> 8 </font><font color="#0000ff"> * 第一个解是[n,n-1,...,n-r+1]</font>
<font color="#804040"> 9 </font><font color="#0000ff"> * 解的条件是位置i上的元素A[i]应该满足</font>
<font color="#804040">10 </font><font color="#0000ff"> * i+A[i]&gt;=r</font>
<font color="#804040">11 </font><font color="#0000ff"> * 回溯法：对最后一个元素减一</font>
<font color="#804040">12 </font><font color="#0000ff"> * 如果满足条件则得到一个新解</font>
<font color="#804040">13 </font><font color="#0000ff"> * 如果不满足，一直向前回溯到该位满足为止</font>
<font color="#804040">14 </font><font color="#0000ff"> * 然后把满足的那位后面的依次等于前面减一</font>
<font color="#804040">15 </font><font color="#0000ff"> * 从而得到一组新解,然后继续</font>
<font color="#804040">16 </font><font color="#0000ff"> * 如果已经回溯到第一位仍不满足</font>
<font color="#804040">17 </font><font color="#0000ff"> * 则所有解都已经找到，终止</font>
<font color="#804040">18 </font><font color="#0000ff"> </font><font color="#0000ff">*/</font>
<font color="#804040">19 </font>vector &lt;vector &lt;<font color="#2e8b57"><b>int</b></font>&gt; &gt; comb(<font color="#2e8b57"><b>int</b></font> n,<font color="#2e8b57"><b>int</b></font> r){
<font color="#804040">20 </font>    vector &lt;vector &lt;<font color="#2e8b57"><b>int</b></font>&gt; &gt; vv;
<font color="#804040">21 </font>    vector &lt;<font color="#2e8b57"><b>int</b></font>&gt; tmp(r);
<font color="#804040">22 </font>    <font color="#2e8b57"><b>int</b></font> i;
<font color="#804040">23 </font>    <font color="#2e8b57"><b>bool</b></font> f=<font color="#ff00ff">false</font>;
<font color="#804040">24 </font>    <font color="#804040"><b>for</b></font>(i=<font color="#ff00ff">0</font>;i&lt;r;i++)tmp[i]=n-i;
<font color="#804040">25 </font>    vv.push_back(tmp);
<font color="#804040">26 </font>    <font color="#804040"><b>while</b></font>(<font color="#ff00ff">true</font>){
<font color="#804040">27 </font>        tmp[r-<font color="#ff00ff">1</font>]--;
<font color="#804040">28 </font>        <font color="#804040"><b>for</b></font>(i=r-<font color="#ff00ff">1</font>;i&gt;=<font color="#ff00ff">0</font>;i--){
<font color="#804040">29 </font>            <font color="#804040"><b>if</b></font>(tmp[i]+i&gt;=r)
<font color="#804040">30 </font>                <font color="#804040"><b>break</b></font>;
<font color="#804040">31 </font>            <font color="#804040"><b>else</b></font>{
<font color="#804040">32 </font>                <font color="#804040"><b>if</b></font>(i==<font color="#ff00ff">0</font>){
<font color="#804040">33 </font>                    f=<font color="#ff00ff">true</font>;
<font color="#804040">34 </font>                    <font color="#804040"><b>break</b></font>;
<font color="#804040">35 </font>                }
<font color="#804040">36 </font>                tmp[i-<font color="#ff00ff">1</font>]--;
<font color="#804040">37 </font>                <font color="#804040"><b>if</b></font>(tmp[i-<font color="#ff00ff">1</font>]+i-<font color="#ff00ff">1</font>&gt;=r){
<font color="#804040">38 </font>                    <font color="#804040"><b>for</b></font> (<font color="#2e8b57"><b>int</b></font> j=i; j &lt; r; j++) {
<font color="#804040">39 </font>                        tmp[j]=tmp[j-<font color="#ff00ff">1</font>]-<font color="#ff00ff">1</font>;
<font color="#804040">40 </font>                    }
<font color="#804040">41 </font>                }
<font color="#804040">42 </font>            }
<font color="#804040">43 </font>        }
<font color="#804040">44 </font>        <font color="#804040"><b>if</b></font>(f)<font color="#804040"><b>break</b></font>;
<font color="#804040">45 </font>        vv.push_back(tmp);
<font color="#804040">46 </font>    }
<font color="#804040">47 </font>    <font color="#804040"><b>return</b></font> vv;
<font color="#804040">48 </font>}
<font color="#804040">49 </font>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/191/feed</wfw:commentRss>
		</item>
		<item>
		<title>野人与传教士</title>
		<link>http://www.luoxf.net/wordpress/archives/189</link>
		<comments>http://www.luoxf.net/wordpress/archives/189#comments</comments>
		<pubDate>Thu, 10 Jul 2008 00:18:05 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=189</guid>
		<description><![CDATA[本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/
设有m个传教士和m个野人来到河边，打算乘一只船从右岸渡到左岸去。该船最大负载能力为n人，在任何时候，如果野人人数超过传教士人数，那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去呢？

C++代码:

 1 #include &#60;stdio.h&#62;
 2 #include &#60;vector&#62;
 3 #include &#60;algorithm&#62;
 4 #include &#60;iostream&#62;
 5 
 6 using namespace std;
 7 bool ok(int a,int b);
 8 bool guoqu(int a,int b,vector &#60; int &#62; c);
 9 bool guolai(int a,int b,vector &#60; int &#62; c);
10 const int ren=5;
11 const int sheep=3;
12 
13 int main(int argc, char **argv)
14 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);">本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/</span><br />
设有m个传教士和m个野人来到河边，打算乘一只船从右岸渡到左岸去。该船最大负载能力为n人，在任何时候，如果野人人数超过传教士人数，那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去呢？<br />
<span id="more-189"></span><br />
C++代码:</p>
<pre>
<font color="#804040"> 1 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;stdio.h&gt;</font>
<font color="#804040"> 2 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;vector&gt;</font>
<font color="#804040"> 3 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;algorithm&gt;</font>
<font color="#804040"> 4 </font><font color="#a020f0">#include </font><font color="#ff00ff">&lt;iostream&gt;</font>
<font color="#804040"> 5 </font>
<font color="#804040"> 6 </font><font color="#804040"><b>using</b></font> <font color="#2e8b57"><b>namespace</b></font> std;
<font color="#804040"> 7 </font><font color="#2e8b57"><b>bool</b></font> ok(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b);
<font color="#804040"> 8 </font><font color="#2e8b57"><b>bool</b></font> guoqu(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b,vector &lt; <font color="#2e8b57"><b>int</b></font> &gt; c);
<font color="#804040"> 9 </font><font color="#2e8b57"><b>bool</b></font> guolai(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b,vector &lt; <font color="#2e8b57"><b>int</b></font> &gt; c);
<font color="#804040">10 </font><font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>int</b></font> ren=<font color="#ff00ff">5</font>;
<font color="#804040">11 </font><font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>int</b></font> sheep=<font color="#ff00ff">3</font>;
<font color="#804040">12 </font>
<font color="#804040">13 </font><font color="#2e8b57"><b>int</b></font> main(<font color="#2e8b57"><b>int</b></font> argc, <font color="#2e8b57"><b>char</b></font> **argv)
<font color="#804040">14 </font>{
<font color="#804040">15 </font>   vector &lt; <font color="#2e8b57"><b>int</b></font> &gt; v;
<font color="#804040">16 </font>   v.push_back(ren*<font color="#ff00ff">110</font>+<font color="#ff00ff">1</font>);
<font color="#804040">17 </font>   guoqu(ren,ren,v);
<font color="#804040">18 </font>   system(<font color="#ff00ff">&quot;pause&quot;</font>);
<font color="#804040">19 </font>   <font color="#804040"><b>return</b></font> <font color="#ff00ff">0</font>;
<font color="#804040">20 </font>}
<font color="#804040">21 </font><font color="#2e8b57"><b>bool</b></font> guoqu(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b,vector &lt; <font color="#2e8b57"><b>int</b></font> &gt; c){
<font color="#804040">22 </font>   <font color="#0000ff">//if(a==0&amp;&amp;b==0)</font>
<font color="#804040">23 </font>   <font color="#0000ff">//   return true;</font>
<font color="#804040">24 </font>   <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> i=<font color="#ff00ff">0</font>;i&lt;=a;i++)
<font color="#804040">25 </font>      <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> j=<font color="#ff00ff">0</font>;j&lt;=b;j++)
<font color="#804040">26 </font>         <font color="#804040"><b>if</b></font>(i+j&gt;<font color="#ff00ff">0</font>&amp;&amp;i+j&lt;=sheep){
<font color="#804040">27 </font>            <font color="#2e8b57"><b>int</b></font> a1,b1,a2,b2,d;
<font color="#804040">28 </font>            a1=a-i;
<font color="#804040">29 </font>            b1=b-j;
<font color="#804040">30 </font>            a2=ren-a1;
<font color="#804040">31 </font>            b2=ren-b1;
<font color="#804040">32 </font>            d=a1*<font color="#ff00ff">100</font>+b1*<font color="#ff00ff">10</font>+<font color="#ff00ff">0</font>;
<font color="#804040">33 </font>            <font color="#804040"><b>if</b></font>(find(c.begin(),c.end(),d)==c.end()&amp;&amp;ok(a1,b1)){
<font color="#804040">34 </font>               c.push_back(d);
<font color="#804040">35 </font>               <font color="#804040"><b>if</b></font>(guolai(a2,b2,c)){
<font color="#804040">36 </font>                  cout&lt;&lt;<font color="#ff00ff">&quot;运&quot;</font>&lt;&lt;i&lt;&lt;<font color="#ff00ff">&quot;牧师和&quot;</font>&lt;&lt;j&lt;&lt;<font color="#ff00ff">&quot;野人过去,&quot;</font>
<font color="#804040">37 </font>                     &lt;&lt;<font color="#ff00ff">&quot;这边&quot;</font>&lt;&lt;a1&lt;&lt;b1&lt;&lt;<font color="#ff00ff">&quot;,那边&quot;</font>&lt;&lt;a2&lt;&lt;b2&lt;&lt;endl;
<font color="#804040">38 </font>                  <font color="#804040"><b>return</b></font> <font color="#ff00ff">true</font>;
<font color="#804040">39 </font>               }
<font color="#804040">40 </font>            }
<font color="#804040">41 </font>         }
<font color="#804040">42 </font>   <font color="#804040"><b>return</b></font> <font color="#ff00ff">false</font>;
<font color="#804040">43 </font>}
<font color="#804040">44 </font><font color="#2e8b57"><b>bool</b></font> guolai(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b,vector &lt; <font color="#2e8b57"><b>int</b></font> &gt; c){
<font color="#804040">45 </font>   <font color="#804040"><b>if</b></font>(a==ren&amp;&amp;b==ren)
<font color="#804040">46 </font>      <font color="#804040"><b>return</b></font> <font color="#ff00ff">true</font>;
<font color="#804040">47 </font>   <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> i=<font color="#ff00ff">0</font>;i&lt;=a;i++)
<font color="#804040">48 </font>      <font color="#804040"><b>for</b></font>(<font color="#2e8b57"><b>int</b></font> j=<font color="#ff00ff">0</font>;j&lt;=b;j++)
<font color="#804040">49 </font>         <font color="#804040"><b>if</b></font>(i+j&gt;<font color="#ff00ff">0</font>&amp;&amp;i+j&lt;=sheep){
<font color="#804040">50 </font>            <font color="#2e8b57"><b>int</b></font> a1,b1,a2,b2,a3,b3,d;
<font color="#804040">51 </font>            a1=a-i;
<font color="#804040">52 </font>            b1=b-j;
<font color="#804040">53 </font>            a2=ren-a1;
<font color="#804040">54 </font>            b2=ren-b1;
<font color="#804040">55 </font>            d=a2*<font color="#ff00ff">100</font>+b2*<font color="#ff00ff">10</font>+<font color="#ff00ff">1</font>;
<font color="#804040">56 </font>            <font color="#804040"><b>if</b></font>(find(c.begin(),c.end(),d)==c.end()&amp;&amp;ok(a2,b2)){
<font color="#804040">57 </font>               c.push_back(d);
<font color="#804040">58 </font>               <font color="#804040"><b>if</b></font>(guoqu(a2,b2,c)){
<font color="#804040">59 </font>                  cout&lt;&lt;<font color="#ff00ff">&quot;运&quot;</font>&lt;&lt;i&lt;&lt;<font color="#ff00ff">&quot;牧师和&quot;</font>&lt;&lt;j&lt;&lt;<font color="#ff00ff">&quot;野人过来,&quot;</font>
<font color="#804040">60 </font>                     &lt;&lt;<font color="#ff00ff">&quot;这边&quot;</font>&lt;&lt;a2&lt;&lt;b2&lt;&lt;<font color="#ff00ff">&quot;,那边&quot;</font>&lt;&lt;a1&lt;&lt;b1&lt;&lt;endl;
<font color="#804040">61 </font>                  <font color="#804040"><b>return</b></font> <font color="#ff00ff">true</font>;
<font color="#804040">62 </font>               }
<font color="#804040">63 </font>            }
<font color="#804040">64 </font>         }
<font color="#804040">65 </font>   <font color="#804040"><b>return</b></font> <font color="#ff00ff">false</font>;
<font color="#804040">66 </font>}
<font color="#804040">67 </font>
<font color="#804040">68 </font><font color="#2e8b57"><b>bool</b></font> ok(<font color="#2e8b57"><b>int</b></font> a,<font color="#2e8b57"><b>int</b></font> b){
<font color="#804040">69 </font>   <font color="#804040"><b>return</b></font> a==ren||a==<font color="#ff00ff">0</font>||a==b;
<font color="#804040">70 </font>}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/189/feed</wfw:commentRss>
		</item>
		<item>
		<title>猎人过河</title>
		<link>http://www.luoxf.net/wordpress/archives/188</link>
		<comments>http://www.luoxf.net/wordpress/archives/188#comments</comments>
		<pubDate>Sun, 06 Jul 2008 20:51:28 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=188</guid>
		<description><![CDATA[猎人带着一框草莓，一只羊和一条狼要过河。但是只有一条小船。条件如下：    * 一次只可以载一样东西。    * 如果让羊和草莓在一起，而猎人不在旁边的话，羊就会把草莓只掉。    * 如果让狼和羊在一起，而猎人不在旁边的话，狼就会把羊吃掉。
&#160;1 guohe([],_,_):-!.&#160;2 error(A):-&#160;3 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;not(member(r,A)),&#160;4 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;member(l,A),&#160;5 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;member(y,A),&#160;6 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;!.&#160;7 error(A):-&#160;8 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;not(member(r,A)),&#160;9 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;member(y,A),10 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;member(c,A),11 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;!.12 ok(A):-not(error(A)).13 % 过去214 guohe(A,C,J):-15 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select(r,A,X),16 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select(D,X,Y),17 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ok(Y),18 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sort(Y,S),19 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;not(member(S,J)),20 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;B=[r,D],21 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;append(B,C,C1),22 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;length(J,L),23 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(L),24 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;从此岸运&#8217;-r-D-&#8216;到彼岸.&#8217;),25 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;此岸&#8217;-S-&#8216;彼岸&#8217;-C1),26 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nl,27 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;J1=[S&#124;J],28 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;guohe(S,C1,J1).29 % 人过去30 guohe(A,C,J):-31 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;select(r,A,X),32 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ok(X),33 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sort(X,S),34 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;not(member(S,J)),35 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;append([r],C,C1),36 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;length(J,L),37 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(L),38 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);"></span>猎人带着一框草莓，一只羊和一条狼要过河。但是只有一条小船。条件如下：<br />    * 一次只可以载一样东西。<br />    * 如果让羊和草莓在一起，而猎人不在旁边的话，羊就会把草莓只掉。<br />    * 如果让狼和羊在一起，而猎人不在旁边的话，狼就会把羊吃掉。<span id="more-188"></span></p>
<p><font color="#a52a2a">&nbsp;1 </font><font color="#ff00ff">guohe([],_,_):-</font><font color="#6a5acd">!</font>.<br /><font color="#a52a2a">&nbsp;2 </font><font color="#ff00ff">error(A):-</font><br /><font color="#a52a2a">&nbsp;3 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(r,A)),<br /><font color="#a52a2a">&nbsp;4 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;member(l,A),<br /><font color="#a52a2a">&nbsp;5 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;member(y,A),<br /><font color="#a52a2a">&nbsp;6 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#6a5acd">!</font>.<br /><font color="#a52a2a">&nbsp;7 </font><font color="#ff00ff">error(A):-</font><br /><font color="#a52a2a">&nbsp;8 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(r,A)),<br /><font color="#a52a2a">&nbsp;9 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;member(y,A),<br /><font color="#a52a2a">10 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;member(c,A),<br /><font color="#a52a2a">11 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#6a5acd">!</font>.<br /><font color="#a52a2a">12 </font><font color="#ff00ff">ok(A):-</font>not(error(A)).<br /><font color="#a52a2a">13 </font><font color="#0000ff">% 过去2</font><br /><font color="#a52a2a">14 </font><font color="#ff00ff">guohe(A,C,J):-</font><br /><font color="#a52a2a">15 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(r,A,X),<br /><font color="#a52a2a">16 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(D,X,Y),<br /><font color="#a52a2a">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok(Y),<br /><font color="#a52a2a">18 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(Y,S),<br /><font color="#a52a2a">19 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(S,J)),<br /><font color="#a52a2a">20 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B<font color="#a52a2a"><b>=</b></font>[r,D],<br /><font color="#a52a2a">21 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>append</b></font>(B,C,C1),<br /><font color="#a52a2a">22 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length(J,L),<br /><font color="#a52a2a">23 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(L),<br /><font color="#a52a2a">24 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从此岸运&#8217;</font>-r-D-<font color="#ff00ff">&#8216;到彼岸.&#8217;</font>),<br /><font color="#a52a2a">25 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;此岸&#8217;</font>-S-<font color="#ff00ff">&#8216;彼岸&#8217;</font>-C1),<br /><font color="#a52a2a">26 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">27 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;J1<font color="#a52a2a"><b>=</b></font>[S|J],<br /><font color="#a52a2a">28 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guohe(S,C1,J1).<br /><font color="#a52a2a">29 </font><font color="#0000ff">% 人过去</font><br /><font color="#a52a2a">30 </font><font color="#ff00ff">guohe(A,C,J):-</font><br /><font color="#a52a2a">31 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(r,A,X),<br /><font color="#a52a2a">32 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok(X),<br /><font color="#a52a2a">33 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(X,S),<br /><font color="#a52a2a">34 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(S,J)),<br /><font color="#a52a2a">35 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>append</b></font>([r],C,C1),<br /><font color="#a52a2a">36 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length(J,L),<br /><font color="#a52a2a">37 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(L),<br /><font color="#a52a2a">38 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从此岸运&#8217;</font>-r-<font color="#ff00ff">&#8216;到彼岸.&#8217;</font>),<br /><font color="#a52a2a">39 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;此岸&#8217;</font>-S-<font color="#ff00ff">&#8216;彼岸&#8217;</font>-C1),<br /><font color="#a52a2a">40 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">41 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;J1<font color="#a52a2a"><b>=</b></font>[S|J],<br /><font color="#a52a2a">42 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guohe(S,C1,J1).<br /><font color="#a52a2a">43 </font><font color="#0000ff">% 过来2</font><br /><font color="#a52a2a">44 </font><font color="#ff00ff">guohe(A,C,J):-</font><br /><font color="#a52a2a">45 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(r,C,X),<br /><font color="#a52a2a">46 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(D,X,Y),<br /><font color="#a52a2a">47 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok(Y),<br /><font color="#a52a2a">48 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B<font color="#a52a2a"><b>=</b></font>[r,D],<br /><font color="#a52a2a">49 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>append</b></font>(B,A,A1),<br /><font color="#a52a2a">50 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(A1,S),<br /><font color="#a52a2a">51 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(S,J)),<br /><font color="#a52a2a">52 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length(J,L),<br /><font color="#a52a2a">53 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(L),<br /><font color="#a52a2a">54 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从彼岸运&#8217;</font>-r-D-<font color="#ff00ff">&#8216;到此岸.&#8217;</font>),<br /><font color="#a52a2a">55 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;此岸&#8217;</font>-S-<font color="#ff00ff">&#8216;彼岸&#8217;</font>-Y),<br /><font color="#a52a2a">56 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">57 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;J1<font color="#a52a2a"><b>=</b></font>[S|J],<br /><font color="#a52a2a">58 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guohe(S,Y,J1).<br /><font color="#a52a2a">59 </font><font color="#0000ff">% 人过来</font><br /><font color="#a52a2a">60 </font><font color="#ff00ff">guohe(A,C,J):-</font><br /><font color="#a52a2a">61 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select(r,C,X),<br /><font color="#a52a2a">62 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok(X),<br /><font color="#a52a2a">63 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>append</b></font>([r],A,A1),<br /><font color="#a52a2a">64 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(A1,S),<br /><font color="#a52a2a">65 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not(member(S,J)),<br /><font color="#a52a2a">66 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length(J,L),<br /><font color="#a52a2a">67 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(L),<br /><font color="#a52a2a">68 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从彼岸运&#8217;</font>-r-<font color="#ff00ff">&#8216;到此岸.&#8217;</font>),<br /><font color="#a52a2a">69 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;此岸&#8217;</font>-S-<font color="#ff00ff">&#8216;彼岸&#8217;</font>-X),<br /><font color="#a52a2a">70 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">71 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;J1<font color="#a52a2a"><b>=</b></font>[S|J],<br /><font color="#a52a2a">72 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;guohe(S,X,J1).<br /><font color="#a52a2a">73 </font>:-guohe([c,l,r,y],[],[[c,l,r,y]]).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/188/feed</wfw:commentRss>
		</item>
		<item>
		<title>韩信走马分油问题</title>
		<link>http://www.luoxf.net/wordpress/archives/187</link>
		<comments>http://www.luoxf.net/wordpress/archives/187#comments</comments>
		<pubDate>Sun, 06 Jul 2008 20:43:14 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<category><![CDATA[原创]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=187</guid>
		<description><![CDATA[本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/
方法很简单
方法一：
1、如果小桶空，从大桶到小桶
2、如果中桶满，从中桶到大桶
3、如果中桶空间能容纳小桶内的，把小桶全倒中桶
4、从小桶倒，把中桶倒满
方法二：完全类似，不过到油的方向为 大桶&#8211;&#62;中桶&#8211;&#62;小桶
&#160;1 dao(X,X,0):-!.&#160;2 % 倒法1&#65306;从大桶往小桶倒&#65292;小桶往中桶到&#160;3 % 3号桶空时从1号往3号桶倒&#160;4 dao(X,Y,0):-&#160;5 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tong(_,_,C),&#160;6 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;X1 is&#160;X-C,&#160;7 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Z =&#160;C,&#160;8 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;从第一个桶倒&#8217;-Z-&#8216;到第三个桶,&#8217;),&#160;9 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;现在三个桶的状态&#8217;-X1-Y-Z),10 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nl,11 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dao(X1,Y,Z).12 % 2号桶满时从2号往1号桶倒13 dao(X,Y,Z):-14 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tong(_,B,_),15 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Y=B,16 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;X1 is&#160;X+Y,17 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;从第二个桶倒&#8217;-Y-&#8216;到第一个桶,&#8217;),18 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;现在三个桶的状态&#8217;-X1-0-Z),19 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nl,20 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dao(X1,0,Z).21 % 2号桶空余超过3号时从3号往2号桶倒完22 dao(X,Y,Z):-23 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tong(_,B,_),24 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;M is&#160;B-Y,25 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Z&#62;0,26 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;M&#62;=Z,27 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Y1 is&#160;Y+Z,28 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;从第三个桶倒&#8217;-Z-&#8216;到第二个桶,&#8217;),29 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;现在三个桶的状态&#8217;-X-Y1-0),30 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nl,31 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dao(X,Y1,0).32 % 2号桶空余不足3号时从3号往2号桶倒部分33 dao(X,Y,Z):-34 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tong(_,B,C),35 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;M is&#160;B-Y,36 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Z=C,37 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;M&#60;Z,38 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;M&#62;0,39 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Z1 is&#160;Z-M,40 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;write(&#8216;从第三个桶倒&#8217;-M-&#8216;到第二个桶,&#8217;),41 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);">本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/<br /></span><br />
方法很简单<br />
方法一：<br />
1、如果小桶空，从大桶到小桶<br />
2、如果中桶满，从中桶到大桶<br />
3、如果中桶空间能容纳小桶内的，把小桶全倒中桶<br />
4、从小桶倒，把中桶倒满<br />
方法二：完全类似，不过到油的方向为 大桶&#8211;&gt;中桶&#8211;&gt;小桶<br /><span id="more-187"></span><code><br />
<font color="#a52a2a">&nbsp;1 </font><font color="#ff00ff">dao(X,X,0):-</font><font color="#6a5acd">!</font>.<br /><font color="#a52a2a">&nbsp;2 </font><font color="#0000ff">% 倒法1&#65306;从大桶往小桶倒&#65292;小桶往中桶到</font><br /><font color="#a52a2a">&nbsp;3 </font><font color="#0000ff">% 3号桶空时从1号往3号桶倒</font><br /><font color="#a52a2a">&nbsp;4 </font><font color="#ff00ff">dao(X,Y,0):-</font><br /><font color="#a52a2a">&nbsp;5 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tong(_,_,C),<br /><font color="#a52a2a">&nbsp;6 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X1 <font color="#a52a2a"><b>is</b></font>&nbsp;X-C,<br /><font color="#a52a2a">&nbsp;7 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z <font color="#a52a2a"><b>=</b></font>&nbsp;C,<br /><font color="#a52a2a">&nbsp;8 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从第一个桶倒&#8217;</font>-Z-<font color="#ff00ff">&#8216;到第三个桶,&#8217;</font>),<br /><font color="#a52a2a">&nbsp;9 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;现在三个桶的状态&#8217;</font>-X1-Y-Z),<br /><font color="#a52a2a">10 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">11 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dao(X1,Y,Z).<br /><font color="#a52a2a">12 </font><font color="#0000ff">% 2号桶满时从2号往1号桶倒</font><br /><font color="#a52a2a">13 </font><font color="#ff00ff">dao(X,Y,Z):-</font><br /><font color="#a52a2a">14 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tong(_,B,_),<br /><font color="#a52a2a">15 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y<font color="#a52a2a"><b>=</b></font>B,<br /><font color="#a52a2a">16 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X1 <font color="#a52a2a"><b>is</b></font>&nbsp;X+Y,<br /><font color="#a52a2a">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从第二个桶倒&#8217;</font>-Y-<font color="#ff00ff">&#8216;到第一个桶,&#8217;</font>),<br /><font color="#a52a2a">18 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;现在三个桶的状态&#8217;</font>-X1-<font color="#ff00ff">0</font>-Z),<br /><font color="#a52a2a">19 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">20 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dao(X1,<font color="#ff00ff">0</font>,Z).<br /><font color="#a52a2a">21 </font><font color="#0000ff">% 2号桶空余超过3号时从3号往2号桶倒完</font><br /><font color="#a52a2a">22 </font><font color="#ff00ff">dao(X,Y,Z):-</font><br /><font color="#a52a2a">23 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tong(_,B,_),<br /><font color="#a52a2a">24 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M <font color="#a52a2a"><b>is</b></font>&nbsp;B-Y,<br /><font color="#a52a2a">25 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z<font color="#a52a2a"><b>&gt;</b></font><font color="#ff00ff">0</font>,<br /><font color="#a52a2a">26 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M<font color="#a52a2a"><b>&gt;=</b></font>Z,<br /><font color="#a52a2a">27 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y1 <font color="#a52a2a"><b>is</b></font>&nbsp;Y+Z,<br /><font color="#a52a2a">28 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从第三个桶倒&#8217;</font>-Z-<font color="#ff00ff">&#8216;到第二个桶,&#8217;</font>),<br /><font color="#a52a2a">29 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;现在三个桶的状态&#8217;</font>-X-Y1-<font color="#ff00ff">0</font>),<br /><font color="#a52a2a">30 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">31 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dao(X,Y1,<font color="#ff00ff">0</font>).<br /><font color="#a52a2a">32 </font><font color="#0000ff">% 2号桶空余不足3号时从3号往2号桶倒部分</font><br /><font color="#a52a2a">33 </font><font color="#ff00ff">dao(X,Y,Z):-</font><br /><font color="#a52a2a">34 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tong(_,B,C),<br /><font color="#a52a2a">35 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M <font color="#a52a2a"><b>is</b></font>&nbsp;B-Y,<br /><font color="#a52a2a">36 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z<font color="#a52a2a"><b>=</b></font>C,<br /><font color="#a52a2a">37 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M<font color="#a52a2a"><b>&lt;</b></font>Z,<br /><font color="#a52a2a">38 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M<font color="#a52a2a"><b>&gt;</b></font><font color="#ff00ff">0</font>,<br /><font color="#a52a2a">39 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z1 <font color="#a52a2a"><b>is</b></font>&nbsp;Z-M,<br /><font color="#a52a2a">40 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;从第三个桶倒&#8217;</font>-M-<font color="#ff00ff">&#8216;到第二个桶,&#8217;</font>),<br /><font color="#a52a2a">41 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>write</b></font>(<font color="#ff00ff">&#8216;现在三个桶的状态&#8217;</font>-X-B-Z1),<br /><font color="#a52a2a">42 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#a52a2a"><b>nl</b></font>,<br /><font color="#a52a2a">43 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dao(X,B,Z1).<br /><font color="#a52a2a">44 </font>:-assert(tong(<font color="#ff00ff">12</font>,<font color="#ff00ff">7</font>,<font color="#ff00ff">5</font>)),dao(<font color="#ff00ff">12</font>,<font color="#ff00ff">0</font>,<font color="#ff00ff">0</font>).</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/187/feed</wfw:commentRss>
		</item>
		<item>
		<title>ip 和 数字转换的 php 代码</title>
		<link>http://www.luoxf.net/wordpress/archives/183</link>
		<comments>http://www.luoxf.net/wordpress/archives/183#comments</comments>
		<pubDate>Wed, 18 Jun 2008 22:14:29 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<category><![CDATA[原创]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=183</guid>
		<description><![CDATA[function ip2number($ip){
                $t=explode('.',$ip);
                $x=0;
                for($i=0;$i]]></description>
			<content:encoded><![CDATA[<pre>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);
            }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/183/feed</wfw:commentRss>
		</item>
		<item>
		<title>ubuntu 下用 rpm 包安装 swi-prolog</title>
		<link>http://www.luoxf.net/wordpress/archives/182</link>
		<comments>http://www.luoxf.net/wordpress/archives/182#comments</comments>
		<pubDate>Wed, 18 Jun 2008 22:03:54 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=182</guid>
		<description><![CDATA[本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/
虽然 ubuntu 的软件仓库中有swi-prolog 的 deb 包（包括xpce），但是安装后 xpce 不可用，帮助也就成了文本模式，也只能使用 edit 用 vim 模式编辑 , emacs 不可用，上官网可惜没有 deb 的包，但是有 rpm 包，于是用 alien 转换
sudo apt-get install alien
sudo alien pl-xxxx.xxx.pl
然后用 dpkg -i pl-xxxx.xxx.deb 安装即可
]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);">本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/<br /></span><br />
虽然 ubuntu 的软件仓库中有swi-prolog 的 deb 包（包括xpce），但是安装后 xpce 不可用，帮助也就成了文本模式，也只能使用 edit 用 vim 模式编辑 , emacs 不可用，上官网可惜没有 deb 的包，但是有 rpm 包，于是用 alien 转换<br />
sudo apt-get install alien<br />
sudo alien pl-xxxx.xxx.pl<br />
然后用 dpkg -i pl-xxxx.xxx.deb 安装即可</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/182/feed</wfw:commentRss>
		</item>
		<item>
		<title>在123456789之间加入加减号得到100(Prolog 程序)</title>
		<link>http://www.luoxf.net/wordpress/archives/181</link>
		<comments>http://www.luoxf.net/wordpress/archives/181#comments</comments>
		<pubDate>Mon, 16 Jun 2008 22:48:12 +0000</pubDate>
		<dc:creator>hugsnow</dc:creator>
		
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.luoxf.net/wordpress/?p=181</guid>
		<description><![CDATA[本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/
分析：先把123456789拆分成若干个数，分析可知不能拆分为3位以上的数，这些数可正可负，如果这些数的和是100则打印之，swi-prolog程序如下：
如题&#65306;在123456789之间加入任意个加减号使算式结果为100&#12290;如&#65306;1+2+3-4+5+6+78+9 =1001+2+34-5+67-8+9 =100更多答案和程序&#65306;1+23-4+5+6+78-9 =1001+23-4+56+7+8+9 =10012+3+4+5-6-7+89 =10012+3-4+5+67+8+9 =10012-3-4+5-6+7+89 =100123+4-5+67-89 =100123+45-67+8-9 =100123-4-5-6-7+8-9 =100123-45-67+89 =100
程序&#65306;1~9之间共有8个位置&#65292;可以放&#8221;+&#8221;,&#8221;-&#8221;,空格三者之一&#65292;对这8个位置穷举即可#!/usr/bin/env/pythonysf=['+','-','']&#12288;for i in ysf:&#12288;&#12288;for j in ysf:&#12288;&#12288;&#12288;for k in ysf:&#12288;&#12288;&#12288;&#12288;for l in ysf:&#12288;&#12288;&#12288;&#12288;&#12288;for m in ysf:&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for n in ysf:&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for o in ysf:&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for p in ysf:&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;bds=&#8221;1%s2%s3%s4%s5%s6%s7%s8%s9&#8243; % (i,j,k,l,m,n,o,p)&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;if (eval(bds) == 100):&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;print bds,&#8221;=100&#8243;
]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(255, 0, 0);">本文由抱雪(hugsnow)原创&#65292;转载请注明来源 http://www.luoxf.net/<br /></span><br />
分析：先把123456789拆分成若干个数，分析可知不能拆分为3位以上的数，这些数可正可负，如果这些数的和是100则打印之，swi-prolog程序如下：</p>
<p>如题&#65306;在123456789之间加入任意个加减号使算式结果为100&#12290;如&#65306;<br />1+2+3-4+5+6+78+9 =100<br />1+2+34-5+67-8+9 =100<br /><span id="more-181"></span>更多答案和程序&#65306;<span id="more-155"></span><br />1+23-4+5+6+78-9 =100<br />1+23-4+56+7+8+9 =100<br />12+3+4+5-6-7+89 =100<br />12+3-4+5+67+8+9 =100<br />12-3-4+5-6+7+89 =100<br />123+4-5+67-89 =100<br />123+45-67+8-9 =100<br />123-4-5-6-7+8-9 =100<br />123-45-67+89 =100</p>
<p>程序&#65306;1~9之间共有8个位置&#65292;可以放&#8221;+&#8221;,&#8221;-&#8221;,空格三者之一&#65292;对这8个位置穷举即可<br />#!/usr/bin/env/python<br />ysf=['+','-','']<br />&#12288;for i in ysf:<br />&#12288;&#12288;for j in ysf:<br />&#12288;&#12288;&#12288;for k in ysf:<br />&#12288;&#12288;&#12288;&#12288;for l in ysf:<br />&#12288;&#12288;&#12288;&#12288;&#12288;for m in ysf:<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for n in ysf:<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for o in ysf:<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;for p in ysf:<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;bds=&#8221;1%s2%s3%s4%s5%s6%s7%s8%s9&#8243; % (i,j,k,l,m,n,o,p)<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;if (eval(bds) == 100):<br />&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;&#12288;print bds,&#8221;=100&#8243;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.luoxf.net/wordpress/archives/181/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
