Python程序员的进化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
从 酷壳 - CoolShell.cn 作者:耗子
 
92 人喜欢此条目
 
以前本站发布过一篇《程序员的进化》,以一种幽默的代码展现方式调侃了程序。下面这篇是关于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))
 
 <p style="margin: 0in; font-family: Calibri; font-size: 10.5pt">摘自:<a href="http://gist.github.com/289467">来源</a></p><p style="margin: 0in; font-family: Calibri; font-size: 10.5pt"> </p>