代码改变世界

随笔分类 -  12-Coding For Fun

迷人的斐波那契数

2012-04-19 00:31 by Anders Cui, 5410 阅读, 收藏, 编辑
摘要: 繁殖力超强的兔子说到斐波那契数,我们自然会想到曾经有一群繁殖力超强的兔子。比萨的商人斐波那契(Fibonacci,12-13世纪,称为比萨的列奥那多)接触到阿拉伯数学后,在其著作《Liber Abaci》中,引入了这个著名的兔子问题。但如果向前追溯下去,则可以追溯到古老的印度数学。斐波那契使用了一个理想化了的兔子生长模型进行研究,并假设:第一个月初有一对刚诞生的兔子两个月之后(第三个月初)它们可以生育每月每对可生育的兔子会诞生下一对新兔子兔子永不死去从第一个月开始,兔子的数目(对)依次是:1,1,2,3,5,8。。。这样就形成了一个序列,记为{Fn},则该序列存在一个递推关系:F(n)=F(n 阅读全文

趣题一则:冯·诺依曼邻居问题

2012-04-15 00:51 by Anders Cui, 127 阅读, 收藏, 编辑
只有注册用户登录后才能阅读该文。 阅读全文

HashSet的实现(下)

2011-06-17 17:19 by Anders Cui, 6386 阅读, 收藏, 编辑
摘要: 在HashSet的实现(上)中,简要介绍了散列法(hashing)的内容,并以二次探测法实现了一个简单的HashSet。在本文中,将进一步讨论散列法,尤其是GetHashCode方法的实现,最后给出完整的HashSet实现。 阅读全文

HashSet的实现(上)

2011-06-13 02:03 by Anders Cui, 14350 阅读, 收藏, 编辑
摘要: 本文主要讨论了散列法和散列函数的基本概念以及解决散列冲突的两种方法:线性探测法和二次探测法,并以二次探测法简单地实现了HashSet的Hash这一部分。 阅读全文

文曲星猜数游戏的一个简单实现

2009-07-08 22:17 by Anders Cui, 1747 阅读, 收藏, 编辑
摘要: 最近比较希望能做一些敏捷开发的实践,昨晚向Nick Wang请教了一下,结合自己的体会,感觉应当从单元测试开始入手,逐步了解XP的相关内容。Nick刚刚出了个小题目,感觉这是学习TDD的一个好机会。今天看到麒麟.NET的一个非TDD实现,一时手痒也尝试了一下。 阅读全文

F#探险之旅(八):使用F#开发Windows应用程序

2008-12-17 22:11 by Anders Cui, 5327 阅读, 收藏, 编辑
摘要: 本文主要讨论了如何使用F#开发Windows应用程序。通过分析,确定了三种主要的方法,重点讨论了如何在F#中利用VS中的窗体设计器,这会使 WinForm程序的开发简单不少。其中的一个例子是processFinder,它可以获取当前机器上的进程和应用程序信息。 阅读全文

F#中有趣的计量单位

2008-11-29 20:23 by Anders Cui, 3937 阅读, 收藏, 编辑
摘要: NASA气象卫星意外坠落,原因竟是计量单位转换这样的“小问题”。为编程语言添加对计量单位的支持可以很大程度上避免这样的错误,编程任务也变得更有趣。F#提供了对计量单位的静态检查,并且封装了国际单位制的各个单位和物理常量,另外我们也可以定义自己的单位;在单位之间进行换算也很简单;此外F#还支持计量单位的泛型。作为对NASA气象卫星的纪念,本文最后给出了一个模拟太阳系的例子 :) 阅读全文

F#探险之旅(七):在F#中进行单元测试

2008-11-18 13:42 by Anders Cui, 2922 阅读, 收藏, 编辑
摘要: 本文介绍了在F#中如何使用NUnit和FsUnit进行单元测试。可以看到两者都很简单,前者简单是因为能很好地延续在C#中的方式,迁移过来不要费多大力气;后者简单是因为它接近自然语言,看起来很亲切,比如我们可以写出fruits |> should contain "apple"这样的测试代码。FsUnit值得关注,除了单元测试本身,我们还可以通过它来了解Language-Oriented Programming的相关知识。 阅读全文

推荐VS2008插件CodeRush Xpress for C#

2008-11-12 13:33 by Anders Cui, 21262 阅读, 收藏, 编辑
摘要: 近期DevExpress和微软共同发布了用于VS2008的插件CodeRush Xpress for C#,它包含了Code Rush和Refactor! Pro中的一些特性。这些特性包括增强的导航、选择工具、代码创建功能以及强大的重构支持。用了CodeRush Xpress,才体会到"工欲善其事,必先利其器",它无疑会大大改善我们的开发体验,而且它是免费的,向您强烈推荐。 阅读全文

Eratosthenes筛法的F#实现

2008-11-11 12:14 by Anders Cui, 1609 阅读, 收藏, 编辑
摘要: 考虑一个常见的数论问题,指定一个自然数,求出不大于该数的所有质数。Eratosthenes筛法就是解决这个问题一种简单、高效的方法。本文提供了这个筛子的C#和F#实现。 阅读全文

浅析Mandelbrot集合及其图形的绘制

2008-10-10 00:31 by Anders Cui, 25421 阅读, 收藏, 编辑
摘要: 1967年,美国数学家Mandelbrot曾出这样一个著名的问题:英格兰的海岸线到底有多长?这个问题在数学上可以理解为:用折线段拟合任意不规则的连续曲线是否一定有效?这个问题的提出实际上是对以欧氏几何为核心的传统几何的挑战,这个问题也是分形几何学的发端。而Mandelbrot集合则是分形几何的经典集合,它的图形表示可以让我们认识到纯粹的数学之美。由于分形几何学知识的匮乏,本文只能给出Mandelbrot集合的定义,并以最容易理解的方式绘制出该集合。这里使用的语言是F#,而不是C#,以后还会有更多采用F#的例子 :) 阅读全文

F#系列随笔索引

2008-10-08 00:18 by Anders Cui, 8522 阅读, 收藏, 编辑
摘要: 在当前的背景下,如果一门语言的广告不能雷到人,还面对C#这样成熟的语言,就真的很难引起人们的兴趣。初学F#会让人一头雾水,我希望能有一个F#教程,它能在一些简单的例子中帮我们拨开乌云,《Foundations of F#》这本书不错,不过有些繁琐、冗长。我把书中的内容整理了一下,也把在《Expert F#》或者网上其它文章的一些内容加进来,另外我还喜欢把自己想到的F#与C#的异同点给写出来,这些就是我的《F#探险之旅》。 阅读全文

从这里开始学习F#

2008-10-03 22:14 by Anders Cui, 3286 阅读, 收藏, 编辑
摘要: Robert Pickering是《Foundations of F#》一书的作者,他同时还创建了一个关于F#的Wiki,是学习F#绝好的地方。 该Wiki目前包含了如下内容:F#编程的笔记,F#的书籍和在线杂志,F#的应用和示例,F#类库,F#的代码片段,F#方面的文章以及F#的工具,这是继hubFS之后又一个F#知识的集中地,相信F#爱好者以后的学习会更为方便! 阅读全文

F#探险之旅(二):函数式编程(中)

2008-08-31 17:44 by Anders Cui, 3581 阅读, 收藏, 编辑
摘要: 接上一篇,本文继续介绍F#中的函数式编程范式,主要包含了操作符、列表、列表推导、类型推导、类型标注等概念。类型推导又称隐式类型,通常是——但不限于——函数式编程语言的特性,比如C# 3.0和VB.NET 9.0都提供了一定的支持,它使很多编程任务变得更为简单。 阅读全文

F#探险之旅(二):函数式编程(上)

2008-08-27 22:10 by Anders Cui, 5374 阅读, 收藏, 编辑
摘要: F#探险之旅的第二站,我们来看看F#中函数式编程相关的内容,这一部分内容很多,索性分为三部分。第一部分主要是关于函数式编程的最基础概念,包括标识符、值、函数、作用域、递归以及匿名函数等。 阅读全文

F#探险之旅(一):选择不同的开发方式

2008-08-21 22:19 by Anders Cui, 5289 阅读, 收藏, 编辑
摘要: 知识是有时效的资产,需要定期对其进行投资,我们不妨把这个过程看作是一次新奇的旅途。本文主要是讨论开发F#程序的不同方式,可以选择轻量级的SharpDevelop、Editplus甚至Notepad,也可以选择重量级的Visual Studio。 阅读全文

F# 20分钟快速上手(二)

2008-08-10 17:05 by Anders Cui, 15006 阅读, 收藏, 编辑
摘要: 在上篇文章里,我们写出了F#的第一个程序,本文我们来看一些F#语言的核心部分,包括值的不变性,模块,Tuple,柯里化,Union类型,模式匹配,Record类型,序列和集合等内容,读完此文后,希望能让您对F#有个整体的认识。 阅读全文

F# 20分钟快速上手(一)

2008-08-03 14:50 by Anders Cui, 24745 阅读, 收藏, 编辑
摘要: 从Allen Lee的《从C# 3.0到F#》一文开始,感觉园子里F#正在升温。Chris Smith写了一个F#的小系列,这里翻译出来与大家分享。在本文从零开始编写我们的第一个F#程序。 阅读全文

C# 小测试(一):类成员初始化与构造函数执行的顺序

2008-07-12 20:25 by Anders Cui, 3660 阅读, 收藏, 编辑
摘要: 我们在实现类的继承时,创建派生类的实例时,基类与派生类的实例字段都要进行实例化,他们的构造函数都需要调用,那执行的顺序是怎样的呢?一起来做做这个测试题吧。 阅读全文