随笔分类 -  Erlang

用Erlang实现递归查找文件
摘要:实现代码如下 1 -module(recursionsearch). 2 -export([start/1]). 3 4 start(Dir) -> 5 L = search_cur_dir(Dir, []), 6 io:format("~p~n", [L]). 7 8 % 在当前文件夹中搜索指定文件 9 search_cur_dir(Dir, L) ->10 FunAddPath = fun(File) -> filename:join(Dir, File) end,11 FindList = lists:map(FunAddPath, filelib: 阅读全文

posted @ 2013-01-06 15:58 应无所住而生其心 阅读(381) 评论(0) 推荐(0)

list相关的习题
摘要:代码如下 1 -module(adv_list). 2 -export([filter/2, reverse/1, concatenate/1, flatten/1]). 3 4 filter(List, Value) -> 5 FiltedList = [X || X<-List, X=<Value], 6 io:format("filted:~w~n", [FiltedList]). 7 8 reverse(List) -> 9 RevertedList = revert(List, []),10 io:format("reverted 阅读全文

posted @ 2012-12-21 17:22 应无所住而生其心 阅读(327) 评论(0) 推荐(0)

用Erlang求解建环问题
摘要:代码如下所示 1 -module(ring). 2 -behaviour(gen_server). 3 -export([start/3, ring_item_init/1]). 4 5 %% 行为模式gen_server的回调函数 6 -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). 7 8 -define(SERVER, ?MODULE). 9 10 %% 环中各个节点进程的状态,id:标识,从1开始,next:下一个进程号 11 -... 阅读全文

posted @ 2012-12-18 16:07 应无所住而生其心 阅读(257) 评论(0) 推荐(0)

用Erlang实现二分查找算法
摘要:算法实现如下 1 -module(bisearch). 2 -export([start/2]). 3 4 start(Value,List) -> 5 Len = length(List), 6 FirstValue = lists:nth(1, List), 7 LastValue = lists:nth(Len, List), 8 if FirstValue =:= Value orelse LastValue =:= Value -> 9 io:format("found ~w~n", [Value]); % 查找值在列表的首... 阅读全文

posted @ 2012-12-13 16:29 应无所住而生其心 阅读(546) 评论(0) 推荐(0)

用Erlang实现冒泡排序算法
摘要:直接上代码 1 -module(bubblesort). 2 -export([start/1]). 3 4 start(List) -> 5 SortedList = sort(List, []), 6 io:format("SortedList:~w~n", [SortedList]). 7 8 %% 冒泡算法:每次step得到一个最大值,对余下的列表再进行递归调用 9 sort([], SortedList) ->10 SortedList;11 sort(List, SortedList) ->12 {Max, T} = step(List),13 阅读全文

posted @ 2012-12-13 09:50 应无所住而生其心 阅读(540) 评论(0) 推荐(0)

用Erlang实现有序列表合并
摘要:采用的算法为分别取出两个有序列表的第一个元素进行比较,将较小的元素从源容器列表移到新列表中 1 -module(sortedlistconcat). 2 -export([start/2]). 3 4 start(L1, L2) -> 5 L = concat(L1, L2, []), 6 io:format("~w~n", [L]). 7 8 concat([H1|T1], [H2|T2], L) -> 9 if10 H1 =< H2 -> concat(T1, [H2|T2], [H1] ++ L);11 H1 > H2 -> c.. 阅读全文

posted @ 2012-12-12 16:55 应无所住而生其心 阅读(560) 评论(0) 推荐(0)

用Erlang实现汉诺塔
摘要:递归的算法很简单,直接上代码 1 -module(hanoi). 2 -export([start/1]). 3 4 start(N) -> 5 move(N, a, b, c). 6 7 %% Source:源圆柱,Middle:中间圆柱,Destination:目的圆柱 8 -spec move(N::integer(), Source::atom(), Middle::atom(), Destination::atom()) -> ok. 9 move(1, Source, _Middle, Destination) ->10 io:format("~w fr 阅读全文

posted @ 2012-12-12 10:36 应无所住而生其心 阅读(317) 评论(0) 推荐(0)

用Erlang实现快速排序算法
摘要:排序算法的原理无需多说,直接上代码 1 -module(quicksort). 2 -export([start/1]). 3 4 %% 程序入口 5 %% List:用户输入的待排序的数值列表 6 start(List) -> 7 SortedList = calu(List), 8 io:format("sorted list:~w~n", [SortedList]). 9 10 %% 得到排序后的数值列表11 calu([Key|RestList]) ->12 {LittleList, GreatList} = calu_sort(Key, RestLis 阅读全文

posted @ 2012-12-10 17:07 应无所住而生其心 阅读(2120) 评论(0) 推荐(0)

用erlang求解经典数学问题(2)-电梯调度问题
摘要:【题目】 假设电梯只在某一楼层停,然后乘客下电梯步行至各自目的楼层,求电梯应停在哪一层能使乘客步行的楼层数和最少。【问题分析】总论: 采用归纳总结的方法,先分析简单的情况,总结出规律,再推演出算法。步骤1:分析题目中的输入、输出 假设楼层有7层,在2至7层下电梯的乘客数量分别为a、b、c、d、e、f,电梯停靠在x层,则所有乘客步行的总层数 y = |x-2|*a + |x-3|*b + |x-4|*c + |x-5|*d + |x-6|*e + |x-7|*f 此函数是一个区间段函数,在相邻整数区间段内事一条斜率为正或为负的线段步骤2:分析区间段 下面对各个区间段进行分析 当2=<x&l 阅读全文

posted @ 2012-12-04 11:47 应无所住而生其心 阅读(1311) 评论(0) 推荐(0)

用erlang求解经典数学问题(1)-农夫过河问题
摘要:【题目】 一位农夫带着一只狼,一只羊和一些菜过河。河边只有一条船,由于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊要吃菜,请问农夫如何才能用最快的方法将这三样东西平安过河。【问题分析】总论: 农夫、狼、羊、菜可以用一个四元组来表示,他们要么在河这边,要么在河那边,只有两种状态,所以最适合用布尔代数来进行分析。步骤1:分析题目中的输入、输出 我们用2#xxxx这4个比特位数字来表示四元组,从高到低位分别表示农夫(b3)、狼(b2)、羊(b1)、菜(b0),每个bit位可为0或1,由此得到2#0000、2#0001……2#1110、2#1111这16种状态,0表示这河这边, 阅读全文

posted @ 2012-11-29 16:58 应无所住而生其心 阅读(2452) 评论(1) 推荐(1)

基于erlang的mud游戏引擎开发
摘要:基于erlang的mud游戏引擎开发 阅读全文

posted @ 2012-11-23 22:40 应无所住而生其心 阅读(786) 评论(0) 推荐(0)

Erlang的参考资源
摘要:Tag:领域专用语言 高并发和分布式领域 函数式语言 OTP 应用框架 应用 模块 代码热替换 单次赋值 尾递归 模式匹配 进程 Link Supervisor 全联通 TakeOver Port 分布式存储 速错(程序中大量的代码都是防御代码,不具备可读性,同时让程序员编写代码时无法专注于业务逻辑,分散了注意力)官方网站:http://www.erlang.org/博客:IT闲人的博客http://blog.csdn.net/zhangzhizhen1988/article/category/1105473http://hideto.iteye.com/category/24824http: 阅读全文

posted @ 2012-11-20 09:55 应无所住而生其心 阅读(291) 评论(0) 推荐(0)

《Erlang/OTP并发编程实战》读书笔记(一)
摘要:第1章 Erlang/OTP平台本章概要平台的优点:生产效率-可在短时间内交付产品级的系统。 代码行数与Bug 数成正比,与维护性成反比,因此在保证表达清楚的前提下应该尽量减少代码行数。更多行的代码意味着更多的bug,而调试常常是开发中最昂贵最耗时的部分(可参见《UNIX编程艺术》)。 当然了,减少程序代码并不会降低技术方案的复杂性,技术方案的复杂性与问题域的复杂性是相等的,不会多也不会少。让代码变得简单只是将复杂性下移,让底层的运行平台和库承担更多的责任,这样就减少了代码质量受程序员水平高低而影响的可能,将个体智慧转变为群体智慧。可靠性-已经用于商业开发多年,具有稳定性极高的虚拟机和平台库监 阅读全文

posted @ 2012-11-19 21:27 应无所住而生其心 阅读(239) 评论(0) 推荐(0)

导航