跳至内容
Python 俱乐部
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
hacks:evolution
====== The Evolution of a Python Programmer ====== A while back, clever snippets of code portraying how different people programming in Python went about solving the same problem, appeared on the internet. Needless to say, it was pretty funny and despite its popularity, not many people seem to know of it when I bring it up. Being as lazy as I am when it comes to these sorts of things, I am blogging about it now. Almost three years later. It has been posted and reposted dozens of times, but full of geek pride, I can proudly say that I helped create it by correcting some of the mistakes in the original. How’s that for major geek cred? ===== Newbie Programmer ===== <code python> def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) print factorial(6) </code> ===== First Year Programmer (Studied Pascal) ===== <code python> def factorial(x): result = 1 i = 2 while i <= x: result = result * i i = i + 1 return result print factorial(6) </code> ===== First Year Programmer (Studied C) ===== <code python> def fact(x): #{ result = i = 1; while (i <= x): #{ result *= i; i += 1; #} return result; #} print(fact(6)) </code> ===== First Year Programmer (Read SICP) ===== <code python> @tailcall def fact(x, acc=1): if (x > 1): return (fact((x - 1), (acc * x))) else: return acc print(fact(6)) </code> ===== First Year Programmer (Python) ===== <code python> def Factorial(x): res = 1 for i in xrange(2, x + 1): res *= i return res print Factorial(6) </code> ===== Lazy Python Programmer ===== <code python> def fact(x): return x > 1 and x * fact(x - 1) or 1 print fact(6) </code> ===== Lazier Python Programmer ===== <code python> f = lambda x: x and x * f(x - 1) or 1 print f(6) </code> ===== Python Expert Programmer ===== <code python> fact = lambda x: reduce(int.__mul__, xrange(2, x + 1), 1) print fact(6) </code> ===== Python Hacker ===== <code python> import sys @tailcall def fact(x, acc=1): if x: return fact(x.__sub__(1), acc.__mul__(x)) return acc sys.stdout.write(str(fact(6)) + '\n') </code> ===== EXPERT PROGRAMMER ===== <code python> from c_math import fact print fact(6) </code> ===== BRITISH EXPERT PROGRAMMER ===== <code python> from c_maths import fact print fact(6) </code> ===== Web Designer ===== <code python> def factorial(x): #------------------------------------------------- #--- Code snippet from The Math Vault --- #--- Calculate factorial (C) Arthur Smith 1999 --- #------------------------------------------------- result = str(1) i = 1 #Thanks Adam while i <= x: #result = result * i #It's faster to use *= #result = str(result * result + i) #result = int(result *= i) #?????? result = str(int(result) * i) #result = int(str(result) * i) i = i + 1 return result print factorial(6) </code> ===== Unix Programmer ===== <code python> import os def fact(x): os.system('factorial ' + str(x)) fact(6) </code> ===== Windows Programmer ===== <code python> NULL = None def CalculateAndPrintFactorialEx(dwNumber, hOutputDevice, lpLparam, lpWparam, lpsscSecurity, *dwReserved): if lpsscSecurity != NULL: return NULL #Not implemented dwResult = dwCounter = 1 while dwCounter <= dwNumber: dwResult *= dwCounter dwCounter += 1 hOutputDevice.write(str(dwResult)) hOutputDevice.write('\n') return 1 import sys CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) </code> ===== Enterprise Programmer ===== <code python> def new(cls, *args, **kwargs): return cls(*args, **kwargs) class Number(object): pass class IntegralNumber(int, Number): def toInt(self): return new (int, self) class InternalBase(object): def __init__(self, base): self.base = base.toInt() def getBase(self): return new (IntegralNumber, self.base) class MathematicsSystem(object): def __init__(self, ibase): Abstract @classmethod def getInstance(cls, ibase): try: cls.__instance except AttributeError: cls.__instance = new (cls, ibase) return cls.__instance class StandardMathematicsSystem(MathematicsSystem): def __init__(self, ibase): if ibase.getBase() != new (IntegralNumber, 2): raise NotImplementedError self.base = ibase.getBase() def calculateFactorial(self, target): result = new (IntegralNumber, 1) i = new (IntegralNumber, 2) while i <= target: result = result * i i = i + new (IntegralNumber, 1) return result print StandardMathematicsSystem.getInstance(new (InternalBase, new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6)) </code> ===== 参考 ===== * http://metaleks.net/programming/the-evolution-of-a-python-programmer * http://dis.4chan.org/read/prog/1180084983/
hacks/evolution.txt
· 最后更改: 2011/01/24 06:30 (外部编辑)
页面工具
显示页面
修订记录
反向链接
回到顶部