<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="file:///C:%5Cwindows%5Ctemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:ApplyBreakingRules/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:AlArabiya;
panose-1:2 6 6 3 5 6 5 2 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:536879119 -1073741824 8 0 211 0;}
@font-face
{font-family:"/@宋体";
mso-font-charset:134;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:AlArabiya;
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
h1
{mso-style-next:正文;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
line-height:240%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:1;
font-size:22.0pt;
font-family:AlArabiya;
mso-font-kerning:22.0pt;}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:navy;
text-decoration:underline;
text-underline:single;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:AlArabiya;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]--><!--StartFragment-->推荐几个好玩又有难度的编程网站
作者:赖勇浩(http://blog.csdn.net/lanphaday)
在社区混久了,总看到许多新朋友问“我学会了XX语言,怎么深入(或能用它做点什么)?”今天我给大家推荐几个好玩又有难度的编程网站,它们不仅可以增进对语言特性的了解,而且可以激发起大家对数学和算法等基础学科的兴趣,有些甚至还可以赚钱、帮你找工作呢!

这于这类网站,第一个要推荐的当然是
project euler,它的地址是:http://projecteuler.net/。它现在已经有两百多道题了,几乎每个周未都会出一两题新题。前面的题会比较简单,而后越来越难。在这个网站玩,必须要数学和编程技能都吃得开才行,好在这个网站并不看过程,只看结果,所以你可以用你最熟悉的编程语言来解决问题。但它提倡一个著名的一分钟原则,即“你解决某一道题的程序在一台主流 PC 运行时间不应多于一分钟”。另外值得称道的是如果你写的代码很牛,论坛是一个很好的炫耀你华丽的代码的好地方;反过来说,论坛可以让你学到许多语言特性、技巧、算法,还有最重要的数学。
我们可以来看看 project euler 的第一道题:
If we list all the natural numbers below 10
that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples
is 23. Find the sum of all the multiples of 3 or 5 below 1000.
它的解决方案用 python 语言写出来是:
print sum(i for i in xrange(1, 1000) if i %
3 == 0 or i % 5 == 0)
怎么样,羡慕 python 的简洁了吧?

作为一个 pythoner,要找好玩的编程网站的话,pythonchallenge.com(http://www.pythonchallenge.com/) 是不容错失的。用沈崴(http://blog.163.com/eishn/)的话来说,它的功效是:我们部门新来两位同事, 在使用 Python 做项目之前, 先沉下心来做了两周的 Python
Challenge, 把 Python 模了个透, 结果两周后程序写出来相当漂亮, 甚至让我这种老牌 Python 程序员跌破眼镜, 与我周围的同事立马有了境界上的区分。
这个网站不仅考验你的数学、算法功底,而且需要比较高的智商。不过,最为重要的是你需要一个像 python 这样的强大的语言,看到上面那幅图片了吗?它是 pythonchallenge 的第一道题,简单地说,就是叫你计算 2 的 38 次方。解决这样的问题用 python 只需要一行代码,5 个字符,你用 C/C++ 的话,哈哈……

另外一个好玩的网站是 code golf(http://codegolf.com/),它的方向比较不同,它倡导短代码。立志于一行写出一个 windows 来的朋友们当然一定要去看看了,不过说到代码短,perl 可能真的很有优势。这个网站接受 PHP、Python和 ruby,也许它更适合于网络程序员?无论如何,这是另一个能够让你炫耀编程技巧的平台,值得去看看。

好吧,仅仅挑战智商的东西你提不起兴趣,你希望得到一些实质性的收益,比如金钱、经验或工作机会,那 topcoder.com(http://www.topcoder.com/) 一定适合你!无论国内还是国外,算法狂人都喜欢去 topcoder 比赛,因为它不仅有难度,而且有丰厚的奖品。如果还是学生,玩 SRM 最是刺激,如果白天你已经有一份工作要忙,那么玩一下 marathon,在长达一周或者两周的时间里,尝试一下持续的优化快感,感觉棒极了!实不相瞒,我是毕业以后才知道这样的一个网站的,偶尔我也会去玩一下 marathon,但最近一年多,我已经没有这个精力了,好想回到学生时代,让我享受一下 topcoder 带来的挑战。
Topcoder 的另一个好处是不仅支持 C++、java、python等语言,而且完美支持微软系的语言,如 VB.net、C# 等,可以说是最为大众化了。它的中文站地址是http://www.topcoderchina.com/。但看上去有点荒废许久的感觉了,不知道当年很热的美少女副总吴莹莹现在在忙啥呢?
<!--EndFragment-->