<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chakkrit Tantithamthavorn&#039;s Official Personal Website &#187; evolution</title>
	<atom:link href="http://www.klainfo.com/tag/evolution/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.klainfo.com</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 13:12:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[Python] Evolution of a Python programmer.py</title>
		<link>http://www.klainfo.com/2010/02/01/python-evolution-of-a-python-programmer-py/</link>
		<comments>http://www.klainfo.com/2010/02/01/python-evolution-of-a-python-programmer-py/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 18:20:37 +0000</pubDate>
		<dc:creator>klainfo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[factorial]]></category>

		<guid isPermaLink="false">http://blog.klainfo.com/?p=612</guid>
		<description><![CDATA[เจอผ่านๆ ลูกตา รู้สึกประทับใจ เรยเก็บไว้หน่อย นะๆๆ 1 2 3 4 5 6 7 #Newbie programmer def factorial&#40;x&#41;: if x == 0: return 1 else: return x * factorial&#40;x - 1&#41; print factorial&#40;6&#41; 1 2 3 4 5 6 7 8 9 #First year programmer, studied Pascal def factorial&#40;x&#41;: result = 1 i = 2 while i [...]]]></description>
			<content:encoded><![CDATA[<p>เจอผ่านๆ ลูกตา รู้สึกประทับใจ เรยเก็บไว้หน่อย นะๆๆ</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Newbie programmer</span>
<span style="color: #ff7700;font-weight:bold;">def</span> factorial<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> x == <span style="color: #ff4500;">0</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> x <span style="color: #66cc66;">*</span> factorial<span style="color: black;">&#40;</span>x - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> factorial<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<p><span id="more-612"></span></p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#First year programmer, studied Pascal</span>
<span style="color: #ff7700;font-weight:bold;">def</span> factorial<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    result = <span style="color: #ff4500;">1</span>
    i = <span style="color: #ff4500;">2</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> i <span style="color: #66cc66;">&lt;</span>= x:
        result = result <span style="color: #66cc66;">*</span> i
        i = i + <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> result
<span style="color: #ff7700;font-weight:bold;">print</span> factorial<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#First year programmer, studied C</span>
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>: <span style="color: #808080; font-style: italic;">#{</span>
    result = i = <span style="color: #ff4500;">1</span><span style="color: #66cc66;">;</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: black;">&#40;</span>i <span style="color: #66cc66;">&lt;</span>= x<span style="color: black;">&#41;</span>: <span style="color: #808080; font-style: italic;">#{</span>
        result <span style="color: #66cc66;">*</span>= i<span style="color: #66cc66;">;</span>
        i += <span style="color: #ff4500;">1</span><span style="color: #66cc66;">;</span>
    <span style="color: #808080; font-style: italic;">#}</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> result<span style="color: #66cc66;">;</span>
<span style="color: #808080; font-style: italic;">#}</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#First year programmer, SICP</span>
@tailcall
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>x, acc=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>x <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>fact<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>x - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span>acc <span style="color: #66cc66;">*</span> x<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:       <span style="color: #ff7700;font-weight:bold;">return</span> acc
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#First year programmer, Python</span>
<span style="color: #ff7700;font-weight:bold;">def</span> Factorial<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    res = <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, x + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
        res <span style="color: #66cc66;">*</span>= i
    <span style="color: #ff7700;font-weight:bold;">return</span> res
<span style="color: #ff7700;font-weight:bold;">print</span> Factorial<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;">&nbsp;
<span style="color: #808080; font-style: italic;">#Lazy Python programmer</span>
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> x <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">1</span> <span style="color: #ff7700;font-weight:bold;">and</span> x <span style="color: #66cc66;">*</span> fact<span style="color: black;">&#40;</span>x - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">or</span> <span style="color: #ff4500;">1</span>
<span style="color: #ff7700;font-weight:bold;">print</span> fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;">&nbsp;
<span style="color: #808080; font-style: italic;">#Lazier Python programmer</span>
f = <span style="color: #ff7700;font-weight:bold;">lambda</span> x: x <span style="color: #ff7700;font-weight:bold;">and</span> x <span style="color: #66cc66;">*</span> f<span style="color: black;">&#40;</span>x - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">or</span> <span style="color: #ff4500;">1</span>
<span style="color: #ff7700;font-weight:bold;">print</span> f<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Python expert programmer</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">operator</span> <span style="color: #ff7700;font-weight:bold;">as</span> op
<span style="color: #ff7700;font-weight:bold;">import</span> functional <span style="color: #ff7700;font-weight:bold;">as</span> f
fact = <span style="color: #ff7700;font-weight:bold;">lambda</span> x: f.<span style="color: black;">foldl</span><span style="color: black;">&#40;</span>op.<span style="color: black;">mul</span>, <span style="color: #ff4500;">1</span>, <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, x + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Python hacker</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
@tailcall
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>x, acc=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> x: <span style="color: #ff7700;font-weight:bold;">return</span> fact<span style="color: black;">&#40;</span>x.<span style="color: #0000cd;">__sub__</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>, acc.<span style="color: #0000cd;">__mul__</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> acc
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span> + <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#EXPERT PROGRAMMER</span>
<span style="color: #ff7700;font-weight:bold;">import</span> c_math
fact = c_math.<span style="color: black;">fact</span>
<span style="color: #ff7700;font-weight:bold;">print</span> fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#ENGLISH EXPERT PROGRAMMER</span>
<span style="color: #ff7700;font-weight:bold;">import</span> c_maths
fact = c_maths.<span style="color: black;">fact</span>
<span style="color: #ff7700;font-weight:bold;">print</span> fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Web designer</span>
<span style="color: #ff7700;font-weight:bold;">def</span> factorial<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#-------------------------------------------------</span>
    <span style="color: #808080; font-style: italic;">#--- Code snippet from The Math Vault          ---</span>
    <span style="color: #808080; font-style: italic;">#--- Calculate factorial (C) Arthur Smith 1999 ---</span>
    <span style="color: #808080; font-style: italic;">#-------------------------------------------------</span>
    result = <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    i = <span style="color: #ff4500;">1</span> <span style="color: #808080; font-style: italic;">#Thanks Adam</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> i <span style="color: #66cc66;">&lt;</span>= x:
        <span style="color: #808080; font-style: italic;">#result = result * i  #It's faster to use *=</span>
        <span style="color: #808080; font-style: italic;">#result = str(result * result + i)</span>
           <span style="color: #808080; font-style: italic;">#result = int(result *= i) #??????</span>
        result <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>result<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> i<span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;">#result = int(str(result) * i)</span>
        i = i + <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> result
<span style="color: #ff7700;font-weight:bold;">print</span> factorial<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Unix programmer</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">def</span> fact<span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>:
    <span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'factorial '</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
fact<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Windows programmer</span>
NULL = <span style="color: #008000;">None</span>
<span style="color: #ff7700;font-weight:bold;">def</span> CalculateAndPrintFactorialEx<span style="color: black;">&#40;</span>dwNumber,
                                 hOutputDevice,
                                 lpLparam,
                                 lpWparam,
                                 lpsscSecurity,
                                 <span style="color: #66cc66;">*</span>dwReserved<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> lpsscSecurity <span style="color: #66cc66;">!</span>= NULL:
        <span style="color: #ff7700;font-weight:bold;">return</span> NULL <span style="color: #808080; font-style: italic;">#Not implemented</span>
    dwResult = dwCounter = <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> dwCounter <span style="color: #66cc66;">&lt;</span>= dwNumber:
        dwResult <span style="color: #66cc66;">*</span>= dwCounter
        dwCounter += <span style="color: #ff4500;">1</span>
    hOutputDevice.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>dwResult<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    hOutputDevice.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">1</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
CalculateAndPrintFactorialEx<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span>, <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL<span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>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
</pre>
</td>
<td class="code">
<pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Enterprise programmer</span>
<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #dc143c;">new</span><span style="color: black;">&#40;</span>cls, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> cls<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Number<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">pass</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> IntegralNumber<span style="color: black;">&#40;</span><span style="color: #008000;">int</span>, Number<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> toInt<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span>, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> InternalBase<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, base<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">base</span> = base.<span style="color: black;">toInt</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> getBase<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #008000;">self</span>.<span style="color: black;">base</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> MathematicsSystem<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, ibase<span style="color: black;">&#41;</span>:
        Abstract
&nbsp;
    @<span style="color: #008000;">classmethod</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> getInstance<span style="color: black;">&#40;</span>cls, ibase<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">try</span>:
            cls.__instance
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">AttributeError</span>:
            cls.__instance = <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>cls, ibase<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> cls.__instance
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> StandardMathematicsSystem<span style="color: black;">&#40;</span>MathematicsSystem<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, ibase<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> ibase.<span style="color: black;">getBase</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">!</span>= <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">raise</span> <span style="color: #008000;">NotImplementedError</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">base</span> = ibase.<span style="color: black;">getBase</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> calculateFactorial<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, target<span style="color: black;">&#41;</span>:
        result = <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        i = <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">while</span> i <span style="color: #66cc66;">&lt;</span>= target:
            result = result <span style="color: #66cc66;">*</span> i
            i = i + <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> result
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> StandardMathematicsSystem.<span style="color: black;">getInstance</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>InternalBase, <span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>.<span style="color: black;">calculateFactorial</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">new</span> <span style="color: black;">&#40;</span>IntegralNumber, <span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre>
</td>
</tr>
</table>
</div>
<p>Greate Idea from <a href="http://gist.github.com/289467">http://gist.github.com/289467</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.klainfo.com/2010/02/01/python-evolution-of-a-python-programmer-py/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.klainfo.com @ 2012-02-08 07:30:24 -->
