转帖 <<程序员的进化>> 很有意思

R9R9R9 2010-02-02 12:27:18

以前本站发布过一篇《程序员的进化》,以一种幽默的代码展现方式调侃了程序。下面这篇是关于Python程序员的。以阶乘为例,很有意思。
新手程序员

def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
print factorial(6)

第一年的刚学完Pascal的新手

def factorial(x):
result = 1
i = 2
while i <= x:
result = result * i
i = i + 1
return result
print factorial(6)

第一年的刚学完C语言的新手

def fact(x): #{
result = i = 1;
while (i <= x): #{
result *= i;
i += 1;
#}
return result;
#}
print(fact(6))

第一年刚学完SICP的新手

@tailcall
def fact(x, acc=1):
if (x > 1): return (fact((x - 1), (acc * x)))
else: return acc
print(fact(6))

第一年刚学完Python的新手

def Factorial(x):
res = 1
for i in xrange(2, x + 1):
res *= i
return res
print Factorial(6)

爱偷懒的程序员

def fact(x):
return x > 1 and x * fact(x - 1) or 1
print fact(6)

更懒的 Python 程序员

f = lambda x: x and x * f(x - 1) or 1
print f(6)

Python 专家

import operator as op
import functional as f
fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1))
print fact(6)

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')

专家级程序员

import c_math
fact = c_math.fact
print fact(6)

英语系的专家级程序员

import c_maths
fact = c_maths.fact
print fact(6)

Web 设计者

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)

Unix 程序员

import os
def fact(x):
os.system('factorial ' + str(x))
fact(6)

Windows 程序员

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, NULL, NULL, NULL, NULL, NULL)

公司里的程序员

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))
...全文
230 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ledans 2010-02-03
  • 打赏
  • 举报
回复
妙的无与伦比了?现在好闷啊?好想放松放松?哈哈哈
某鸟 2010-02-03
  • 打赏
  • 举报
回复
公司里的第一年的刚学完C++语言的新手:
int f(int x)
{
result=i=1;
while (i<=x){
result = result*i;
i = i + 1;
}
return result;
}
print(f(6))

对于公司里c/c++的新手,
1.命名很少会用英文单词
2.运算符前后一般不会有人加空格。
2.很少有人会用 result *= i;的用法,更不可能会用result=i=1;之类的用法
3.事实上,也很少有人用递归...
昵称很不好取 2010-02-02
  • 打赏
  • 举报
回复
up
Sou2012 2010-02-02
  • 打赏
  • 举报
回复
帮顶的呀, 哈哈!
R9R9R9 2010-02-02
  • 打赏
  • 举报
回复
虚心接受BS,废人
Wolf0403 2010-02-02
  • 打赏
  • 举报
回复
路过 BS LZ

[Quote=引用 4 楼 healer_kx 的回复:]
嗯,Java就那么两种写法,递归的,不递归的,不信发帖到Java版看看。
[/Quote]

我绝对见过用 EJB 做的。。
某某9 2010-02-02
  • 打赏
  • 举报
回复
工人盖房子时发现木头门框大了点,塞不进砖砌的门洞里面去。
木匠来了,说:“这问题还不容易解决吗?”掏出刨子,刷刷刷,把门框刨小了,问题解决了。
砖瓦匠来了,说:“这问题还不容易解决吗?”掏出瓦刀,当当当,把门洞扩大了,问题解决了。
赵4老师 2010-02-02
  • 打赏
  • 举报
回复
讲个小故事:
工人盖房子时发现木头门框大了点,塞不进砖砌的门洞里面去。
木匠来了,说:“这问题还不容易解决吗?”掏出刨子,刷刷刷,把门框刨小了,问题解决了。
砖瓦匠来了,说:“这问题还不容易解决吗?”掏出瓦刀,当当当,把门洞扩大了,问题解决了。
xjw163 2010-02-02
  • 打赏
  • 举报
回复
没看明白
healer_kx 2010-02-02
  • 打赏
  • 举报
回复
嗯,Java就那么两种写法,递归的,不递归的,不信发帖到Java版看看。
lovesi3344 2010-02-02
  • 打赏
  • 举报
回复
严重同意
赵4老师 2010-02-02
  • 打赏
  • 举报
回复
确实如此!

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧