推薦幾個(gè)好玩又有難度的編程網(wǎng)站 - 賴勇浩(戀花蝶)的博客在社區(qū)混久了,總看到許多新朋友問“我學(xué)會(huì)了XX語(yǔ)言,怎么深入(或能用它做點(diǎn)什么)?”今天我給大家推薦幾個(gè)好玩又有難度的編程網(wǎng)站,它們不僅可以增進(jìn)對(duì)語(yǔ)言特性的了解,而且可以激發(fā)起大家對(duì)數(shù)學(xué)和算法等基礎(chǔ)學(xué)科的興趣,有些甚至還可以賺錢、幫你找工作呢!
這于這類網(wǎng)站,第一個(gè)要推薦的當(dāng)然是 project euler,它的地址是:http://projecteuler.net/。它現(xiàn)在已經(jīng)有兩百多道題了,幾乎每個(gè)周未都會(huì)出一兩題新題。前面的題會(huì)比較簡(jiǎn)單,而后越來(lái)越難。在這個(gè)網(wǎng)站玩,必須要數(shù)學(xué)和編程技能都吃得開才行,好在這個(gè)網(wǎng)站并不看過程,只看結(jié)果,所以你可以用你最熟悉的編程語(yǔ)言來(lái)解決問題。但它提倡一個(gè)著名的一分鐘原則,即“你解決某一道題的程序在一臺(tái)主流 PC 運(yùn)行時(shí)間不應(yīng)多于一分鐘”。另外值得稱道的是如果你寫的代碼很牛,論壇是一個(gè)很好的炫耀你華麗的代碼的好地方;反過來(lái)說(shuō),論壇可以讓你學(xué)到許多語(yǔ)言特性、技巧、算法,還有最重要的數(shù)學(xué)。
我們可以來(lái)看看 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 語(yǔ)言寫出來(lái)是:
print sum(i for i in xrange(1, 1000) if i % 3 == 0 or i % 5 == 0)
作為一個(gè) pythoner,要找好玩的編程網(wǎng)站的話,pythonchallenge.com(http://www.pythonchallenge.com/) 是不容錯(cuò)失的。用沈崴(http://blog.163.com/eishn/)的話來(lái)說(shuō),它的功效是:我們部門新來(lái)兩位同事, 在使用 Python 做項(xiàng)目之前, 先沉下心來(lái)做了兩周的 Python Challenge, 把 Python 模了個(gè)透, 結(jié)果兩周后程序?qū)懗鰜?lái)相當(dāng)漂亮, 甚至讓我這種老牌 Python 程序員跌破眼鏡, 與我周圍的同事立馬有了境界上的區(qū)分。
這個(gè)網(wǎng)站不僅考驗(yàn)?zāi)愕臄?shù)學(xué)、算法功底,而且需要比較高的智商。不過,最為重要的是你需要一個(gè)像 python 這樣的強(qiáng)大的語(yǔ)言,看到上面那幅圖片了嗎?它是 pythonchallenge 的第一道題,簡(jiǎn)單地說(shuō),就是叫你計(jì)算 2 的 38 次方。解決這樣的問題用 python 只需要一行代碼,5 個(gè)字符,你用 C/C++ 的話,哈哈……
另外一個(gè)好玩的網(wǎng)站是 code golf(http://codegolf.com/),它的方向比較不同,它倡導(dǎo)短代碼。立志于一行寫出一個(gè) windows 來(lái)的朋友們當(dāng)然一定要去看看了,不過說(shuō)到代碼短,perl 可能真的很有優(yōu)勢(shì)。這個(gè)網(wǎng)站接受 PHP、Python和 ruby,也許它更適合于網(wǎng)絡(luò)程序員?無(wú)論如何,這是另一個(gè)能夠讓你炫耀編程技巧的平臺(tái),值得去看看。
好吧,僅僅挑戰(zhàn)智商的東西你提不起興趣,你希望得到一些實(shí)質(zhì)性的收益,比如金錢、經(jīng)驗(yàn)或工作機(jī)會(huì),那 topcoder.com(http://www.topcoder.com/) 一定適合你!無(wú)論國(guó)內(nèi)還是國(guó)外,算法狂人都喜歡去 topcoder 比賽,因?yàn)樗粌H有難度,而且有豐厚的獎(jiǎng)品。如果還是學(xué)生,玩 SRM 最是刺激,如果白天你已經(jīng)有一份工作要忙,那么玩一下 marathon,在長(zhǎng)達(dá)一周或者兩周的時(shí)間里,嘗試一下持續(xù)的優(yōu)化快感,感覺棒極了!實(shí)不相瞞,我是畢業(yè)以后才知道這樣的一個(gè)網(wǎng)站的,偶爾我也會(huì)去玩一下 marathon,但最近一年多,我已經(jīng)沒有這個(gè)精力了,好想回到學(xué)生時(shí)代,讓我享受一下 topcoder 帶來(lái)的挑戰(zhàn)。
Topcoder 的另一個(gè)好處是不僅支持 C++、java、python等語(yǔ)言,而且完美支持微軟系的語(yǔ)言,如 VB.net、C# 等,可以說(shuō)是最為大眾化了。它的中文站地址是http://www.topcoderchina.com/。但看上去有點(diǎn)荒廢許久的感覺了,不知道當(dāng)年很熱的美少女副總吳瑩瑩現(xiàn)在在忙啥呢?
發(fā)表于 @ 2008年10月23日 23:40:00