Mercurial > hg
comparison tests/test-highlight.t @ 40370:3b84ef904aea
py3: fix module imports in test-highlight.t
The hash changes are because the *.py file is committed to the repo.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 18 Oct 2018 18:11:16 -0400 |
parents | 5abc47d4ca6b |
children | 9d39671adadb |
comparison
equal
deleted
inserted
replaced
40369:ef6cab7930b3 | 40370:3b84ef904aea |
---|---|
24 > | 24 > |
25 > primes = 2 : sieve [3, 5..] | 25 > primes = 2 : sieve [3, 5..] |
26 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] | 26 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] |
27 > """ | 27 > """ |
28 > | 28 > |
29 > from itertools import dropwhile, ifilter, islice, count, chain | 29 > import itertools |
30 > | 30 > |
31 > def primes(): | 31 > def primes(): |
32 > """Generate all primes.""" | 32 > """Generate all primes.""" |
33 > def sieve(ns): | 33 > def sieve(ns): |
34 > p = ns.next() | 34 > p = ns.next() |
35 > # It is important to yield *here* in order to stop the | 35 > # It is important to yield *here* in order to stop the |
36 > # infinite recursion. | 36 > # infinite recursion. |
37 > yield p | 37 > yield p |
38 > ns = ifilter(lambda n: n % p != 0, ns) | 38 > ns = itertools.ifilter(lambda n: n % p != 0, ns) |
39 > for n in sieve(ns): | 39 > for n in sieve(ns): |
40 > yield n | 40 > yield n |
41 > | 41 > |
42 > odds = ifilter(lambda i: i % 2 == 1, count()) | 42 > odds = itertools.ifilter(lambda i: i % 2 == 1, itertools.count()) |
43 > return chain([2], sieve(dropwhile(lambda n: n < 3, odds))) | 43 > dropwhile = itertools.dropwhile |
44 > return itertools.chain([2], sieve(dropwhile(lambda n: n < 3, odds))) | |
44 > | 45 > |
45 > if __name__ == "__main__": | 46 > if __name__ == "__main__": |
46 > import sys | 47 > import sys |
47 > try: | 48 > try: |
48 > n = int(sys.argv[1]) | 49 > n = int(sys.argv[1]) |
49 > except (ValueError, IndexError): | 50 > except (ValueError, IndexError): |
50 > n = 10 | 51 > n = 10 |
51 > p = primes() | 52 > p = primes() |
52 > print("The first %d primes: %s" % (n, list(islice(p, n)))) | 53 > print("The first %d primes: %s" % (n, list(itertools.islice(p, n)))) |
53 > EOF | 54 > EOF |
54 $ echo >> primes.py # to test html markup with an empty line just before EOF | 55 $ echo >> primes.py # to test html markup with an empty line just before EOF |
55 $ hg ci -Ama | 56 $ hg ci -Ama |
56 adding primes.py | 57 adding primes.py |
57 | 58 |
72 <meta name="robots" content="index, nofollow" /> | 73 <meta name="robots" content="index, nofollow" /> |
73 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> | 74 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> |
74 <script type="text/javascript" src="/static/mercurial.js"></script> | 75 <script type="text/javascript" src="/static/mercurial.js"></script> |
75 | 76 |
76 <link rel="stylesheet" href="/highlightcss" type="text/css" /> | 77 <link rel="stylesheet" href="/highlightcss" type="text/css" /> |
77 <title>test: f4fca47b67e6 primes.py</title> | 78 <title>test: 687f2d169546 primes.py</title> |
78 </head> | 79 </head> |
79 <body> | 80 <body> |
80 | 81 |
81 <div class="container"> | 82 <div class="container"> |
82 <div class="menu"> | 83 <div class="menu"> |
110 </div> | 111 </div> |
111 | 112 |
112 <div class="main"> | 113 <div class="main"> |
113 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2> | 114 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2> |
114 <h3> | 115 <h3> |
115 view primes.py @ 0:<a href="/rev/f4fca47b67e6">f4fca47b67e6</a> | 116 view primes.py @ 0:<a href="/rev/687f2d169546">687f2d169546</a> |
116 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span> | 117 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span> |
117 </h3> | 118 </h3> |
118 | 119 |
119 | 120 |
120 <form class="search" action="/log"> | 121 <form class="search" action="/log"> |
157 <span id="l2"></span><a href="#l2"></a> | 158 <span id="l2"></span><a href="#l2"></a> |
158 <span id="l3"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l3"></a> | 159 <span id="l3"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l3"></a> |
159 <span id="l4"><span class="sd"> where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]</span></span><a href="#l4"></a> | 160 <span id="l4"><span class="sd"> where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]</span></span><a href="#l4"></a> |
160 <span id="l5"><span class="sd">"""</span></span><a href="#l5"></a> | 161 <span id="l5"><span class="sd">"""</span></span><a href="#l5"></a> |
161 <span id="l6"></span><a href="#l6"></a> | 162 <span id="l6"></span><a href="#l6"></a> |
162 <span id="l7"><span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></span><a href="#l7"></a> | 163 <span id="l7"><span class="kn">import</span> <span class="nn">itertools</span></span><a href="#l7"></a> |
163 <span id="l8"></span><a href="#l8"></a> | 164 <span id="l8"></span><a href="#l8"></a> |
164 <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a> | 165 <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a> |
165 <span id="l10"> <span class="sd">"""Generate all primes."""</span></span><a href="#l10"></a> | 166 <span id="l10"> <span class="sd">"""Generate all primes."""</span></span><a href="#l10"></a> |
166 <span id="l11"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a> | 167 <span id="l11"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a> |
167 <span id="l12"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a> | 168 <span id="l12"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a> |
168 <span id="l13"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a> | 169 <span id="l13"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a> |
169 <span id="l14"> <span class="c"># infinite recursion.</span></span><a href="#l14"></a> | 170 <span id="l14"> <span class="c"># infinite recursion.</span></span><a href="#l14"></a> |
170 <span id="l15"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l15"></a> | 171 <span id="l15"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l15"></a> |
171 <span id="l16"> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l16"></a> | 172 <span id="l16"> <span class="n">ns</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l16"></a> |
172 <span id="l17"> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l17"></a> | 173 <span id="l17"> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l17"></a> |
173 <span id="l18"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l18"></a> | 174 <span id="l18"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l18"></a> |
174 <span id="l19"></span><a href="#l19"></a> | 175 <span id="l19"></span><a href="#l19"></a> |
175 <span id="l20"> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></span><a href="#l20"></a> | 176 <span id="l20"> <span class="n">odds</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">())</span></span><a href="#l20"></a> |
176 <span id="l21"> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o"><</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></span><a href="#l21"></a> | 177 <span id="l21"> <span class="n">dropwhile</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">dropwhile</span></span><a href="#l21"></a> |
177 <span id="l22"></span><a href="#l22"></a> | 178 <span id="l22"> <span class="kn">return</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o"><</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></span><a href="#l22"></a> |
178 <span id="l23"><span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span></span><a href="#l23"></a> | 179 <span id="l23"></span><a href="#l23"></a> |
179 <span id="l24"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l24"></a> | 180 <span id="l24"><span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span></span><a href="#l24"></a> |
180 <span id="l25"> <span class="kn">try</span><span class="p">:</span></span><a href="#l25"></a> | 181 <span id="l25"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l25"></a> |
181 <span id="l26"> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span><a href="#l26"></a> | 182 <span id="l26"> <span class="kn">try</span><span class="p">:</span></span><a href="#l26"></a> |
182 <span id="l27"> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></span><a href="#l27"></a> | 183 <span id="l27"> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span><a href="#l27"></a> |
183 <span id="l28"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l28"></a> | 184 <span id="l28"> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></span><a href="#l28"></a> |
184 <span id="l29"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l29"></a> | 185 <span id="l29"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l29"></a> |
185 <span id="l30"> <span class="kn">print</span><span class="p">(</span><span class="s">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></span><a href="#l30"></a> | 186 <span id="l30"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l30"></a> |
186 <span id="l31"></span><a href="#l31"></a> | 187 <span id="l31"> <span class="kn">print</span><span class="p">(</span><span class="s">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></span><a href="#l31"></a> |
188 <span id="l32"></span><a href="#l32"></a> | |
187 </pre> | 189 </pre> |
188 </div> | 190 </div> |
189 | 191 |
190 <script type="text/javascript" src="/static/followlines.js"></script> | 192 <script type="text/javascript" src="/static/followlines.js"></script> |
191 | 193 |
249 </div> | 251 </div> |
250 | 252 |
251 <div class="main"> | 253 <div class="main"> |
252 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2> | 254 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2> |
253 <h3> | 255 <h3> |
254 annotate primes.py @ 0:<a href="/rev/f4fca47b67e6">f4fca47b67e6</a> | 256 annotate primes.py @ 0:<a href="/rev/687f2d169546">687f2d169546</a> |
255 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span> | 257 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span> |
256 </h3> | 258 </h3> |
257 | 259 |
258 | 260 |
259 <form class="search" action="/log"> | 261 <form class="search" action="/log"> |
316 data-selectabletag="TR" | 318 data-selectabletag="TR" |
317 data-ishead="1"> | 319 data-ishead="1"> |
318 | 320 |
319 <tr id="l1" class="thisrev"> | 321 <tr id="l1" class="thisrev"> |
320 <td class="annotate parity0"> | 322 <td class="annotate parity0"> |
321 <a href="/annotate/f4fca47b67e6/primes.py#l1"> | 323 <a href="/annotate/687f2d169546/primes.py#l1"> |
322 0 | 324 0 |
323 </a> | 325 </a> |
324 <div class="annotate-info"> | 326 <div class="annotate-info"> |
325 <div> | 327 <div> |
326 <a href="/annotate/f4fca47b67e6/primes.py#l1"> | 328 <a href="/annotate/687f2d169546/primes.py#l1"> |
327 f4fca47b67e6</a> | 329 687f2d169546</a> |
328 a | 330 a |
329 </div> | 331 </div> |
330 <div><em>test</em></div> | 332 <div><em>test</em></div> |
331 <div>parents: </div> | 333 <div>parents: </div> |
332 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 334 <a href="/diff/687f2d169546/primes.py">diff</a> |
333 <a href="/rev/f4fca47b67e6">changeset</a> | 335 <a href="/rev/687f2d169546">changeset</a> |
334 </div> | 336 </div> |
335 </td> | 337 </td> |
336 <td class="source followlines-btn-parent"><a href="#l1"> 1</a> <span class="sd">"""Fun with generators. Corresponding Haskell implementation:</span></td> | 338 <td class="source followlines-btn-parent"><a href="#l1"> 1</a> <span class="sd">"""Fun with generators. Corresponding Haskell implementation:</span></td> |
337 </tr> | 339 </tr> |
338 <tr id="l2" class="thisrev"> | 340 <tr id="l2" class="thisrev"> |
339 <td class="annotate parity0"> | 341 <td class="annotate parity0"> |
340 | 342 |
341 <div class="annotate-info"> | 343 <div class="annotate-info"> |
342 <div> | 344 <div> |
343 <a href="/annotate/f4fca47b67e6/primes.py#l2"> | 345 <a href="/annotate/687f2d169546/primes.py#l2"> |
344 f4fca47b67e6</a> | 346 687f2d169546</a> |
345 a | 347 a |
346 </div> | 348 </div> |
347 <div><em>test</em></div> | 349 <div><em>test</em></div> |
348 <div>parents: </div> | 350 <div>parents: </div> |
349 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 351 <a href="/diff/687f2d169546/primes.py">diff</a> |
350 <a href="/rev/f4fca47b67e6">changeset</a> | 352 <a href="/rev/687f2d169546">changeset</a> |
351 </div> | 353 </div> |
352 </td> | 354 </td> |
353 <td class="source followlines-btn-parent"><a href="#l2"> 2</a> </td> | 355 <td class="source followlines-btn-parent"><a href="#l2"> 2</a> </td> |
354 </tr> | 356 </tr> |
355 <tr id="l3" class="thisrev"> | 357 <tr id="l3" class="thisrev"> |
356 <td class="annotate parity0"> | 358 <td class="annotate parity0"> |
357 | 359 |
358 <div class="annotate-info"> | 360 <div class="annotate-info"> |
359 <div> | 361 <div> |
360 <a href="/annotate/f4fca47b67e6/primes.py#l3"> | 362 <a href="/annotate/687f2d169546/primes.py#l3"> |
361 f4fca47b67e6</a> | 363 687f2d169546</a> |
362 a | 364 a |
363 </div> | 365 </div> |
364 <div><em>test</em></div> | 366 <div><em>test</em></div> |
365 <div>parents: </div> | 367 <div>parents: </div> |
366 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 368 <a href="/diff/687f2d169546/primes.py">diff</a> |
367 <a href="/rev/f4fca47b67e6">changeset</a> | 369 <a href="/rev/687f2d169546">changeset</a> |
368 </div> | 370 </div> |
369 </td> | 371 </td> |
370 <td class="source followlines-btn-parent"><a href="#l3"> 3</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td> | 372 <td class="source followlines-btn-parent"><a href="#l3"> 3</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td> |
371 </tr> | 373 </tr> |
372 <tr id="l4" class="thisrev"> | 374 <tr id="l4" class="thisrev"> |
373 <td class="annotate parity0"> | 375 <td class="annotate parity0"> |
374 | 376 |
375 <div class="annotate-info"> | 377 <div class="annotate-info"> |
376 <div> | 378 <div> |
377 <a href="/annotate/f4fca47b67e6/primes.py#l4"> | 379 <a href="/annotate/687f2d169546/primes.py#l4"> |
378 f4fca47b67e6</a> | 380 687f2d169546</a> |
379 a | 381 a |
380 </div> | 382 </div> |
381 <div><em>test</em></div> | 383 <div><em>test</em></div> |
382 <div>parents: </div> | 384 <div>parents: </div> |
383 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 385 <a href="/diff/687f2d169546/primes.py">diff</a> |
384 <a href="/rev/f4fca47b67e6">changeset</a> | 386 <a href="/rev/687f2d169546">changeset</a> |
385 </div> | 387 </div> |
386 </td> | 388 </td> |
387 <td class="source followlines-btn-parent"><a href="#l4"> 4</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]</span></td> | 389 <td class="source followlines-btn-parent"><a href="#l4"> 4</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]</span></td> |
388 </tr> | 390 </tr> |
389 <tr id="l5" class="thisrev"> | 391 <tr id="l5" class="thisrev"> |
390 <td class="annotate parity0"> | 392 <td class="annotate parity0"> |
391 | 393 |
392 <div class="annotate-info"> | 394 <div class="annotate-info"> |
393 <div> | 395 <div> |
394 <a href="/annotate/f4fca47b67e6/primes.py#l5"> | 396 <a href="/annotate/687f2d169546/primes.py#l5"> |
395 f4fca47b67e6</a> | 397 687f2d169546</a> |
396 a | 398 a |
397 </div> | 399 </div> |
398 <div><em>test</em></div> | 400 <div><em>test</em></div> |
399 <div>parents: </div> | 401 <div>parents: </div> |
400 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 402 <a href="/diff/687f2d169546/primes.py">diff</a> |
401 <a href="/rev/f4fca47b67e6">changeset</a> | 403 <a href="/rev/687f2d169546">changeset</a> |
402 </div> | 404 </div> |
403 </td> | 405 </td> |
404 <td class="source followlines-btn-parent"><a href="#l5"> 5</a> <span class="sd">"""</span></td> | 406 <td class="source followlines-btn-parent"><a href="#l5"> 5</a> <span class="sd">"""</span></td> |
405 </tr> | 407 </tr> |
406 <tr id="l6" class="thisrev"> | 408 <tr id="l6" class="thisrev"> |
407 <td class="annotate parity0"> | 409 <td class="annotate parity0"> |
408 | 410 |
409 <div class="annotate-info"> | 411 <div class="annotate-info"> |
410 <div> | 412 <div> |
411 <a href="/annotate/f4fca47b67e6/primes.py#l6"> | 413 <a href="/annotate/687f2d169546/primes.py#l6"> |
412 f4fca47b67e6</a> | 414 687f2d169546</a> |
413 a | 415 a |
414 </div> | 416 </div> |
415 <div><em>test</em></div> | 417 <div><em>test</em></div> |
416 <div>parents: </div> | 418 <div>parents: </div> |
417 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 419 <a href="/diff/687f2d169546/primes.py">diff</a> |
418 <a href="/rev/f4fca47b67e6">changeset</a> | 420 <a href="/rev/687f2d169546">changeset</a> |
419 </div> | 421 </div> |
420 </td> | 422 </td> |
421 <td class="source followlines-btn-parent"><a href="#l6"> 6</a> </td> | 423 <td class="source followlines-btn-parent"><a href="#l6"> 6</a> </td> |
422 </tr> | 424 </tr> |
423 <tr id="l7" class="thisrev"> | 425 <tr id="l7" class="thisrev"> |
424 <td class="annotate parity0"> | 426 <td class="annotate parity0"> |
425 | 427 |
426 <div class="annotate-info"> | 428 <div class="annotate-info"> |
427 <div> | 429 <div> |
428 <a href="/annotate/f4fca47b67e6/primes.py#l7"> | 430 <a href="/annotate/687f2d169546/primes.py#l7"> |
429 f4fca47b67e6</a> | 431 687f2d169546</a> |
430 a | 432 a |
431 </div> | 433 </div> |
432 <div><em>test</em></div> | 434 <div><em>test</em></div> |
433 <div>parents: </div> | 435 <div>parents: </div> |
434 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 436 <a href="/diff/687f2d169546/primes.py">diff</a> |
435 <a href="/rev/f4fca47b67e6">changeset</a> | 437 <a href="/rev/687f2d169546">changeset</a> |
436 </div> | 438 </div> |
437 </td> | 439 </td> |
438 <td class="source followlines-btn-parent"><a href="#l7"> 7</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td> | 440 <td class="source followlines-btn-parent"><a href="#l7"> 7</a> <span class="kn">import</span> <span class="nn">itertools</span></td> |
439 </tr> | 441 </tr> |
440 <tr id="l8" class="thisrev"> | 442 <tr id="l8" class="thisrev"> |
441 <td class="annotate parity0"> | 443 <td class="annotate parity0"> |
442 | 444 |
443 <div class="annotate-info"> | 445 <div class="annotate-info"> |
444 <div> | 446 <div> |
445 <a href="/annotate/f4fca47b67e6/primes.py#l8"> | 447 <a href="/annotate/687f2d169546/primes.py#l8"> |
446 f4fca47b67e6</a> | 448 687f2d169546</a> |
447 a | 449 a |
448 </div> | 450 </div> |
449 <div><em>test</em></div> | 451 <div><em>test</em></div> |
450 <div>parents: </div> | 452 <div>parents: </div> |
451 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 453 <a href="/diff/687f2d169546/primes.py">diff</a> |
452 <a href="/rev/f4fca47b67e6">changeset</a> | 454 <a href="/rev/687f2d169546">changeset</a> |
453 </div> | 455 </div> |
454 </td> | 456 </td> |
455 <td class="source followlines-btn-parent"><a href="#l8"> 8</a> </td> | 457 <td class="source followlines-btn-parent"><a href="#l8"> 8</a> </td> |
456 </tr> | 458 </tr> |
457 <tr id="l9" class="thisrev"> | 459 <tr id="l9" class="thisrev"> |
458 <td class="annotate parity0"> | 460 <td class="annotate parity0"> |
459 | 461 |
460 <div class="annotate-info"> | 462 <div class="annotate-info"> |
461 <div> | 463 <div> |
462 <a href="/annotate/f4fca47b67e6/primes.py#l9"> | 464 <a href="/annotate/687f2d169546/primes.py#l9"> |
463 f4fca47b67e6</a> | 465 687f2d169546</a> |
464 a | 466 a |
465 </div> | 467 </div> |
466 <div><em>test</em></div> | 468 <div><em>test</em></div> |
467 <div>parents: </div> | 469 <div>parents: </div> |
468 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 470 <a href="/diff/687f2d169546/primes.py">diff</a> |
469 <a href="/rev/f4fca47b67e6">changeset</a> | 471 <a href="/rev/687f2d169546">changeset</a> |
470 </div> | 472 </div> |
471 </td> | 473 </td> |
472 <td class="source followlines-btn-parent"><a href="#l9"> 9</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td> | 474 <td class="source followlines-btn-parent"><a href="#l9"> 9</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td> |
473 </tr> | 475 </tr> |
474 <tr id="l10" class="thisrev"> | 476 <tr id="l10" class="thisrev"> |
475 <td class="annotate parity0"> | 477 <td class="annotate parity0"> |
476 | 478 |
477 <div class="annotate-info"> | 479 <div class="annotate-info"> |
478 <div> | 480 <div> |
479 <a href="/annotate/f4fca47b67e6/primes.py#l10"> | 481 <a href="/annotate/687f2d169546/primes.py#l10"> |
480 f4fca47b67e6</a> | 482 687f2d169546</a> |
481 a | 483 a |
482 </div> | 484 </div> |
483 <div><em>test</em></div> | 485 <div><em>test</em></div> |
484 <div>parents: </div> | 486 <div>parents: </div> |
485 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 487 <a href="/diff/687f2d169546/primes.py">diff</a> |
486 <a href="/rev/f4fca47b67e6">changeset</a> | 488 <a href="/rev/687f2d169546">changeset</a> |
487 </div> | 489 </div> |
488 </td> | 490 </td> |
489 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="sd">"""Generate all primes."""</span></td> | 491 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="sd">"""Generate all primes."""</span></td> |
490 </tr> | 492 </tr> |
491 <tr id="l11" class="thisrev"> | 493 <tr id="l11" class="thisrev"> |
492 <td class="annotate parity0"> | 494 <td class="annotate parity0"> |
493 | 495 |
494 <div class="annotate-info"> | 496 <div class="annotate-info"> |
495 <div> | 497 <div> |
496 <a href="/annotate/f4fca47b67e6/primes.py#l11"> | 498 <a href="/annotate/687f2d169546/primes.py#l11"> |
497 f4fca47b67e6</a> | 499 687f2d169546</a> |
498 a | 500 a |
499 </div> | 501 </div> |
500 <div><em>test</em></div> | 502 <div><em>test</em></div> |
501 <div>parents: </div> | 503 <div>parents: </div> |
502 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 504 <a href="/diff/687f2d169546/primes.py">diff</a> |
503 <a href="/rev/f4fca47b67e6">changeset</a> | 505 <a href="/rev/687f2d169546">changeset</a> |
504 </div> | 506 </div> |
505 </td> | 507 </td> |
506 <td class="source followlines-btn-parent"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td> | 508 <td class="source followlines-btn-parent"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td> |
507 </tr> | 509 </tr> |
508 <tr id="l12" class="thisrev"> | 510 <tr id="l12" class="thisrev"> |
509 <td class="annotate parity0"> | 511 <td class="annotate parity0"> |
510 | 512 |
511 <div class="annotate-info"> | 513 <div class="annotate-info"> |
512 <div> | 514 <div> |
513 <a href="/annotate/f4fca47b67e6/primes.py#l12"> | 515 <a href="/annotate/687f2d169546/primes.py#l12"> |
514 f4fca47b67e6</a> | 516 687f2d169546</a> |
515 a | 517 a |
516 </div> | 518 </div> |
517 <div><em>test</em></div> | 519 <div><em>test</em></div> |
518 <div>parents: </div> | 520 <div>parents: </div> |
519 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 521 <a href="/diff/687f2d169546/primes.py">diff</a> |
520 <a href="/rev/f4fca47b67e6">changeset</a> | 522 <a href="/rev/687f2d169546">changeset</a> |
521 </div> | 523 </div> |
522 </td> | 524 </td> |
523 <td class="source followlines-btn-parent"><a href="#l12"> 12</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td> | 525 <td class="source followlines-btn-parent"><a href="#l12"> 12</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td> |
524 </tr> | 526 </tr> |
525 <tr id="l13" class="thisrev"> | 527 <tr id="l13" class="thisrev"> |
526 <td class="annotate parity0"> | 528 <td class="annotate parity0"> |
527 | 529 |
528 <div class="annotate-info"> | 530 <div class="annotate-info"> |
529 <div> | 531 <div> |
530 <a href="/annotate/f4fca47b67e6/primes.py#l13"> | 532 <a href="/annotate/687f2d169546/primes.py#l13"> |
531 f4fca47b67e6</a> | 533 687f2d169546</a> |
532 a | 534 a |
533 </div> | 535 </div> |
534 <div><em>test</em></div> | 536 <div><em>test</em></div> |
535 <div>parents: </div> | 537 <div>parents: </div> |
536 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 538 <a href="/diff/687f2d169546/primes.py">diff</a> |
537 <a href="/rev/f4fca47b67e6">changeset</a> | 539 <a href="/rev/687f2d169546">changeset</a> |
538 </div> | 540 </div> |
539 </td> | 541 </td> |
540 <td class="source followlines-btn-parent"><a href="#l13"> 13</a> <span class="c"># It is important to yield *here* in order to stop the</span></td> | 542 <td class="source followlines-btn-parent"><a href="#l13"> 13</a> <span class="c"># It is important to yield *here* in order to stop the</span></td> |
541 </tr> | 543 </tr> |
542 <tr id="l14" class="thisrev"> | 544 <tr id="l14" class="thisrev"> |
543 <td class="annotate parity0"> | 545 <td class="annotate parity0"> |
544 | 546 |
545 <div class="annotate-info"> | 547 <div class="annotate-info"> |
546 <div> | 548 <div> |
547 <a href="/annotate/f4fca47b67e6/primes.py#l14"> | 549 <a href="/annotate/687f2d169546/primes.py#l14"> |
548 f4fca47b67e6</a> | 550 687f2d169546</a> |
549 a | 551 a |
550 </div> | 552 </div> |
551 <div><em>test</em></div> | 553 <div><em>test</em></div> |
552 <div>parents: </div> | 554 <div>parents: </div> |
553 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 555 <a href="/diff/687f2d169546/primes.py">diff</a> |
554 <a href="/rev/f4fca47b67e6">changeset</a> | 556 <a href="/rev/687f2d169546">changeset</a> |
555 </div> | 557 </div> |
556 </td> | 558 </td> |
557 <td class="source followlines-btn-parent"><a href="#l14"> 14</a> <span class="c"># infinite recursion.</span></td> | 559 <td class="source followlines-btn-parent"><a href="#l14"> 14</a> <span class="c"># infinite recursion.</span></td> |
558 </tr> | 560 </tr> |
559 <tr id="l15" class="thisrev"> | 561 <tr id="l15" class="thisrev"> |
560 <td class="annotate parity0"> | 562 <td class="annotate parity0"> |
561 | 563 |
562 <div class="annotate-info"> | 564 <div class="annotate-info"> |
563 <div> | 565 <div> |
564 <a href="/annotate/f4fca47b67e6/primes.py#l15"> | 566 <a href="/annotate/687f2d169546/primes.py#l15"> |
565 f4fca47b67e6</a> | 567 687f2d169546</a> |
566 a | 568 a |
567 </div> | 569 </div> |
568 <div><em>test</em></div> | 570 <div><em>test</em></div> |
569 <div>parents: </div> | 571 <div>parents: </div> |
570 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 572 <a href="/diff/687f2d169546/primes.py">diff</a> |
571 <a href="/rev/f4fca47b67e6">changeset</a> | 573 <a href="/rev/687f2d169546">changeset</a> |
572 </div> | 574 </div> |
573 </td> | 575 </td> |
574 <td class="source followlines-btn-parent"><a href="#l15"> 15</a> <span class="kn">yield</span> <span class="n">p</span></td> | 576 <td class="source followlines-btn-parent"><a href="#l15"> 15</a> <span class="kn">yield</span> <span class="n">p</span></td> |
575 </tr> | 577 </tr> |
576 <tr id="l16" class="thisrev"> | 578 <tr id="l16" class="thisrev"> |
577 <td class="annotate parity0"> | 579 <td class="annotate parity0"> |
578 | 580 |
579 <div class="annotate-info"> | 581 <div class="annotate-info"> |
580 <div> | 582 <div> |
581 <a href="/annotate/f4fca47b67e6/primes.py#l16"> | 583 <a href="/annotate/687f2d169546/primes.py#l16"> |
582 f4fca47b67e6</a> | 584 687f2d169546</a> |
583 a | 585 a |
584 </div> | 586 </div> |
585 <div><em>test</em></div> | 587 <div><em>test</em></div> |
586 <div>parents: </div> | 588 <div>parents: </div> |
587 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 589 <a href="/diff/687f2d169546/primes.py">diff</a> |
588 <a href="/rev/f4fca47b67e6">changeset</a> | 590 <a href="/rev/687f2d169546">changeset</a> |
589 </div> | 591 </div> |
590 </td> | 592 </td> |
591 <td class="source followlines-btn-parent"><a href="#l16"> 16</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td> | 593 <td class="source followlines-btn-parent"><a href="#l16"> 16</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td> |
592 </tr> | 594 </tr> |
593 <tr id="l17" class="thisrev"> | 595 <tr id="l17" class="thisrev"> |
594 <td class="annotate parity0"> | 596 <td class="annotate parity0"> |
595 | 597 |
596 <div class="annotate-info"> | 598 <div class="annotate-info"> |
597 <div> | 599 <div> |
598 <a href="/annotate/f4fca47b67e6/primes.py#l17"> | 600 <a href="/annotate/687f2d169546/primes.py#l17"> |
599 f4fca47b67e6</a> | 601 687f2d169546</a> |
600 a | 602 a |
601 </div> | 603 </div> |
602 <div><em>test</em></div> | 604 <div><em>test</em></div> |
603 <div>parents: </div> | 605 <div>parents: </div> |
604 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 606 <a href="/diff/687f2d169546/primes.py">diff</a> |
605 <a href="/rev/f4fca47b67e6">changeset</a> | 607 <a href="/rev/687f2d169546">changeset</a> |
606 </div> | 608 </div> |
607 </td> | 609 </td> |
608 <td class="source followlines-btn-parent"><a href="#l17"> 17</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td> | 610 <td class="source followlines-btn-parent"><a href="#l17"> 17</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td> |
609 </tr> | 611 </tr> |
610 <tr id="l18" class="thisrev"> | 612 <tr id="l18" class="thisrev"> |
611 <td class="annotate parity0"> | 613 <td class="annotate parity0"> |
612 | 614 |
613 <div class="annotate-info"> | 615 <div class="annotate-info"> |
614 <div> | 616 <div> |
615 <a href="/annotate/f4fca47b67e6/primes.py#l18"> | 617 <a href="/annotate/687f2d169546/primes.py#l18"> |
616 f4fca47b67e6</a> | 618 687f2d169546</a> |
617 a | 619 a |
618 </div> | 620 </div> |
619 <div><em>test</em></div> | 621 <div><em>test</em></div> |
620 <div>parents: </div> | 622 <div>parents: </div> |
621 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 623 <a href="/diff/687f2d169546/primes.py">diff</a> |
622 <a href="/rev/f4fca47b67e6">changeset</a> | 624 <a href="/rev/687f2d169546">changeset</a> |
623 </div> | 625 </div> |
624 </td> | 626 </td> |
625 <td class="source followlines-btn-parent"><a href="#l18"> 18</a> <span class="kn">yield</span> <span class="n">n</span></td> | 627 <td class="source followlines-btn-parent"><a href="#l18"> 18</a> <span class="kn">yield</span> <span class="n">n</span></td> |
626 </tr> | 628 </tr> |
627 <tr id="l19" class="thisrev"> | 629 <tr id="l19" class="thisrev"> |
628 <td class="annotate parity0"> | 630 <td class="annotate parity0"> |
629 | 631 |
630 <div class="annotate-info"> | 632 <div class="annotate-info"> |
631 <div> | 633 <div> |
632 <a href="/annotate/f4fca47b67e6/primes.py#l19"> | 634 <a href="/annotate/687f2d169546/primes.py#l19"> |
633 f4fca47b67e6</a> | 635 687f2d169546</a> |
634 a | 636 a |
635 </div> | 637 </div> |
636 <div><em>test</em></div> | 638 <div><em>test</em></div> |
637 <div>parents: </div> | 639 <div>parents: </div> |
638 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 640 <a href="/diff/687f2d169546/primes.py">diff</a> |
639 <a href="/rev/f4fca47b67e6">changeset</a> | 641 <a href="/rev/687f2d169546">changeset</a> |
640 </div> | 642 </div> |
641 </td> | 643 </td> |
642 <td class="source followlines-btn-parent"><a href="#l19"> 19</a> </td> | 644 <td class="source followlines-btn-parent"><a href="#l19"> 19</a> </td> |
643 </tr> | 645 </tr> |
644 <tr id="l20" class="thisrev"> | 646 <tr id="l20" class="thisrev"> |
645 <td class="annotate parity0"> | 647 <td class="annotate parity0"> |
646 | 648 |
647 <div class="annotate-info"> | 649 <div class="annotate-info"> |
648 <div> | 650 <div> |
649 <a href="/annotate/f4fca47b67e6/primes.py#l20"> | 651 <a href="/annotate/687f2d169546/primes.py#l20"> |
650 f4fca47b67e6</a> | 652 687f2d169546</a> |
651 a | 653 a |
652 </div> | 654 </div> |
653 <div><em>test</em></div> | 655 <div><em>test</em></div> |
654 <div>parents: </div> | 656 <div>parents: </div> |
655 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 657 <a href="/diff/687f2d169546/primes.py">diff</a> |
656 <a href="/rev/f4fca47b67e6">changeset</a> | 658 <a href="/rev/687f2d169546">changeset</a> |
657 </div> | 659 </div> |
658 </td> | 660 </td> |
659 <td class="source followlines-btn-parent"><a href="#l20"> 20</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td> | 661 <td class="source followlines-btn-parent"><a href="#l20"> 20</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">())</span></td> |
660 </tr> | 662 </tr> |
661 <tr id="l21" class="thisrev"> | 663 <tr id="l21" class="thisrev"> |
662 <td class="annotate parity0"> | 664 <td class="annotate parity0"> |
663 | 665 |
664 <div class="annotate-info"> | 666 <div class="annotate-info"> |
665 <div> | 667 <div> |
666 <a href="/annotate/f4fca47b67e6/primes.py#l21"> | 668 <a href="/annotate/687f2d169546/primes.py#l21"> |
667 f4fca47b67e6</a> | 669 687f2d169546</a> |
668 a | 670 a |
669 </div> | 671 </div> |
670 <div><em>test</em></div> | 672 <div><em>test</em></div> |
671 <div>parents: </div> | 673 <div>parents: </div> |
672 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 674 <a href="/diff/687f2d169546/primes.py">diff</a> |
673 <a href="/rev/f4fca47b67e6">changeset</a> | 675 <a href="/rev/687f2d169546">changeset</a> |
674 </div> | 676 </div> |
675 </td> | 677 </td> |
676 <td class="source followlines-btn-parent"><a href="#l21"> 21</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o"><</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td> | 678 <td class="source followlines-btn-parent"><a href="#l21"> 21</a> <span class="n">dropwhile</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">dropwhile</span></td> |
677 </tr> | 679 </tr> |
678 <tr id="l22" class="thisrev"> | 680 <tr id="l22" class="thisrev"> |
679 <td class="annotate parity0"> | 681 <td class="annotate parity0"> |
680 | 682 |
681 <div class="annotate-info"> | 683 <div class="annotate-info"> |
682 <div> | 684 <div> |
683 <a href="/annotate/f4fca47b67e6/primes.py#l22"> | 685 <a href="/annotate/687f2d169546/primes.py#l22"> |
684 f4fca47b67e6</a> | 686 687f2d169546</a> |
685 a | 687 a |
686 </div> | 688 </div> |
687 <div><em>test</em></div> | 689 <div><em>test</em></div> |
688 <div>parents: </div> | 690 <div>parents: </div> |
689 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 691 <a href="/diff/687f2d169546/primes.py">diff</a> |
690 <a href="/rev/f4fca47b67e6">changeset</a> | 692 <a href="/rev/687f2d169546">changeset</a> |
691 </div> | 693 </div> |
692 </td> | 694 </td> |
693 <td class="source followlines-btn-parent"><a href="#l22"> 22</a> </td> | 695 <td class="source followlines-btn-parent"><a href="#l22"> 22</a> <span class="kn">return</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o"><</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td> |
694 </tr> | 696 </tr> |
695 <tr id="l23" class="thisrev"> | 697 <tr id="l23" class="thisrev"> |
696 <td class="annotate parity0"> | 698 <td class="annotate parity0"> |
697 | 699 |
698 <div class="annotate-info"> | 700 <div class="annotate-info"> |
699 <div> | 701 <div> |
700 <a href="/annotate/f4fca47b67e6/primes.py#l23"> | 702 <a href="/annotate/687f2d169546/primes.py#l23"> |
701 f4fca47b67e6</a> | 703 687f2d169546</a> |
702 a | 704 a |
703 </div> | 705 </div> |
704 <div><em>test</em></div> | 706 <div><em>test</em></div> |
705 <div>parents: </div> | 707 <div>parents: </div> |
706 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 708 <a href="/diff/687f2d169546/primes.py">diff</a> |
707 <a href="/rev/f4fca47b67e6">changeset</a> | 709 <a href="/rev/687f2d169546">changeset</a> |
708 </div> | 710 </div> |
709 </td> | 711 </td> |
710 <td class="source followlines-btn-parent"><a href="#l23"> 23</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span></td> | 712 <td class="source followlines-btn-parent"><a href="#l23"> 23</a> </td> |
711 </tr> | 713 </tr> |
712 <tr id="l24" class="thisrev"> | 714 <tr id="l24" class="thisrev"> |
713 <td class="annotate parity0"> | 715 <td class="annotate parity0"> |
714 | 716 |
715 <div class="annotate-info"> | 717 <div class="annotate-info"> |
716 <div> | 718 <div> |
717 <a href="/annotate/f4fca47b67e6/primes.py#l24"> | 719 <a href="/annotate/687f2d169546/primes.py#l24"> |
718 f4fca47b67e6</a> | 720 687f2d169546</a> |
719 a | 721 a |
720 </div> | 722 </div> |
721 <div><em>test</em></div> | 723 <div><em>test</em></div> |
722 <div>parents: </div> | 724 <div>parents: </div> |
723 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 725 <a href="/diff/687f2d169546/primes.py">diff</a> |
724 <a href="/rev/f4fca47b67e6">changeset</a> | 726 <a href="/rev/687f2d169546">changeset</a> |
725 </div> | 727 </div> |
726 </td> | 728 </td> |
727 <td class="source followlines-btn-parent"><a href="#l24"> 24</a> <span class="kn">import</span> <span class="nn">sys</span></td> | 729 <td class="source followlines-btn-parent"><a href="#l24"> 24</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span></td> |
728 </tr> | 730 </tr> |
729 <tr id="l25" class="thisrev"> | 731 <tr id="l25" class="thisrev"> |
730 <td class="annotate parity0"> | 732 <td class="annotate parity0"> |
731 | 733 |
732 <div class="annotate-info"> | 734 <div class="annotate-info"> |
733 <div> | 735 <div> |
734 <a href="/annotate/f4fca47b67e6/primes.py#l25"> | 736 <a href="/annotate/687f2d169546/primes.py#l25"> |
735 f4fca47b67e6</a> | 737 687f2d169546</a> |
736 a | 738 a |
737 </div> | 739 </div> |
738 <div><em>test</em></div> | 740 <div><em>test</em></div> |
739 <div>parents: </div> | 741 <div>parents: </div> |
740 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 742 <a href="/diff/687f2d169546/primes.py">diff</a> |
741 <a href="/rev/f4fca47b67e6">changeset</a> | 743 <a href="/rev/687f2d169546">changeset</a> |
742 </div> | 744 </div> |
743 </td> | 745 </td> |
744 <td class="source followlines-btn-parent"><a href="#l25"> 25</a> <span class="kn">try</span><span class="p">:</span></td> | 746 <td class="source followlines-btn-parent"><a href="#l25"> 25</a> <span class="kn">import</span> <span class="nn">sys</span></td> |
745 </tr> | 747 </tr> |
746 <tr id="l26" class="thisrev"> | 748 <tr id="l26" class="thisrev"> |
747 <td class="annotate parity0"> | 749 <td class="annotate parity0"> |
748 | 750 |
749 <div class="annotate-info"> | 751 <div class="annotate-info"> |
750 <div> | 752 <div> |
751 <a href="/annotate/f4fca47b67e6/primes.py#l26"> | 753 <a href="/annotate/687f2d169546/primes.py#l26"> |
752 f4fca47b67e6</a> | 754 687f2d169546</a> |
753 a | 755 a |
754 </div> | 756 </div> |
755 <div><em>test</em></div> | 757 <div><em>test</em></div> |
756 <div>parents: </div> | 758 <div>parents: </div> |
757 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 759 <a href="/diff/687f2d169546/primes.py">diff</a> |
758 <a href="/rev/f4fca47b67e6">changeset</a> | 760 <a href="/rev/687f2d169546">changeset</a> |
759 </div> | 761 </div> |
760 </td> | 762 </td> |
761 <td class="source followlines-btn-parent"><a href="#l26"> 26</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></td> | 763 <td class="source followlines-btn-parent"><a href="#l26"> 26</a> <span class="kn">try</span><span class="p">:</span></td> |
762 </tr> | 764 </tr> |
763 <tr id="l27" class="thisrev"> | 765 <tr id="l27" class="thisrev"> |
764 <td class="annotate parity0"> | 766 <td class="annotate parity0"> |
765 | 767 |
766 <div class="annotate-info"> | 768 <div class="annotate-info"> |
767 <div> | 769 <div> |
768 <a href="/annotate/f4fca47b67e6/primes.py#l27"> | 770 <a href="/annotate/687f2d169546/primes.py#l27"> |
769 f4fca47b67e6</a> | 771 687f2d169546</a> |
770 a | 772 a |
771 </div> | 773 </div> |
772 <div><em>test</em></div> | 774 <div><em>test</em></div> |
773 <div>parents: </div> | 775 <div>parents: </div> |
774 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 776 <a href="/diff/687f2d169546/primes.py">diff</a> |
775 <a href="/rev/f4fca47b67e6">changeset</a> | 777 <a href="/rev/687f2d169546">changeset</a> |
776 </div> | 778 </div> |
777 </td> | 779 </td> |
778 <td class="source followlines-btn-parent"><a href="#l27"> 27</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td> | 780 <td class="source followlines-btn-parent"><a href="#l27"> 27</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></td> |
779 </tr> | 781 </tr> |
780 <tr id="l28" class="thisrev"> | 782 <tr id="l28" class="thisrev"> |
781 <td class="annotate parity0"> | 783 <td class="annotate parity0"> |
782 | 784 |
783 <div class="annotate-info"> | 785 <div class="annotate-info"> |
784 <div> | 786 <div> |
785 <a href="/annotate/f4fca47b67e6/primes.py#l28"> | 787 <a href="/annotate/687f2d169546/primes.py#l28"> |
786 f4fca47b67e6</a> | 788 687f2d169546</a> |
787 a | 789 a |
788 </div> | 790 </div> |
789 <div><em>test</em></div> | 791 <div><em>test</em></div> |
790 <div>parents: </div> | 792 <div>parents: </div> |
791 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 793 <a href="/diff/687f2d169546/primes.py">diff</a> |
792 <a href="/rev/f4fca47b67e6">changeset</a> | 794 <a href="/rev/687f2d169546">changeset</a> |
793 </div> | 795 </div> |
794 </td> | 796 </td> |
795 <td class="source followlines-btn-parent"><a href="#l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td> | 797 <td class="source followlines-btn-parent"><a href="#l28"> 28</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td> |
796 </tr> | 798 </tr> |
797 <tr id="l29" class="thisrev"> | 799 <tr id="l29" class="thisrev"> |
798 <td class="annotate parity0"> | 800 <td class="annotate parity0"> |
799 | 801 |
800 <div class="annotate-info"> | 802 <div class="annotate-info"> |
801 <div> | 803 <div> |
802 <a href="/annotate/f4fca47b67e6/primes.py#l29"> | 804 <a href="/annotate/687f2d169546/primes.py#l29"> |
803 f4fca47b67e6</a> | 805 687f2d169546</a> |
804 a | 806 a |
805 </div> | 807 </div> |
806 <div><em>test</em></div> | 808 <div><em>test</em></div> |
807 <div>parents: </div> | 809 <div>parents: </div> |
808 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 810 <a href="/diff/687f2d169546/primes.py">diff</a> |
809 <a href="/rev/f4fca47b67e6">changeset</a> | 811 <a href="/rev/687f2d169546">changeset</a> |
810 </div> | 812 </div> |
811 </td> | 813 </td> |
812 <td class="source followlines-btn-parent"><a href="#l29"> 29</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td> | 814 <td class="source followlines-btn-parent"><a href="#l29"> 29</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td> |
813 </tr> | 815 </tr> |
814 <tr id="l30" class="thisrev"> | 816 <tr id="l30" class="thisrev"> |
815 <td class="annotate parity0"> | 817 <td class="annotate parity0"> |
816 | 818 |
817 <div class="annotate-info"> | 819 <div class="annotate-info"> |
818 <div> | 820 <div> |
819 <a href="/annotate/f4fca47b67e6/primes.py#l30"> | 821 <a href="/annotate/687f2d169546/primes.py#l30"> |
820 f4fca47b67e6</a> | 822 687f2d169546</a> |
821 a | 823 a |
822 </div> | 824 </div> |
823 <div><em>test</em></div> | 825 <div><em>test</em></div> |
824 <div>parents: </div> | 826 <div>parents: </div> |
825 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 827 <a href="/diff/687f2d169546/primes.py">diff</a> |
826 <a href="/rev/f4fca47b67e6">changeset</a> | 828 <a href="/rev/687f2d169546">changeset</a> |
827 </div> | 829 </div> |
828 </td> | 830 </td> |
829 <td class="source followlines-btn-parent"><a href="#l30"> 30</a> <span class="kn">print</span><span class="p">(</span><span class="s">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></td> | 831 <td class="source followlines-btn-parent"><a href="#l30"> 30</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td> |
830 </tr> | 832 </tr> |
831 <tr id="l31" class="thisrev"> | 833 <tr id="l31" class="thisrev"> |
832 <td class="annotate parity0"> | 834 <td class="annotate parity0"> |
833 | 835 |
834 <div class="annotate-info"> | 836 <div class="annotate-info"> |
835 <div> | 837 <div> |
836 <a href="/annotate/f4fca47b67e6/primes.py#l31"> | 838 <a href="/annotate/687f2d169546/primes.py#l31"> |
837 f4fca47b67e6</a> | 839 687f2d169546</a> |
838 a | 840 a |
839 </div> | 841 </div> |
840 <div><em>test</em></div> | 842 <div><em>test</em></div> |
841 <div>parents: </div> | 843 <div>parents: </div> |
842 <a href="/diff/f4fca47b67e6/primes.py">diff</a> | 844 <a href="/diff/687f2d169546/primes.py">diff</a> |
843 <a href="/rev/f4fca47b67e6">changeset</a> | 845 <a href="/rev/687f2d169546">changeset</a> |
844 </div> | 846 </div> |
845 </td> | 847 </td> |
846 <td class="source followlines-btn-parent"><a href="#l31"> 31</a> </td> | 848 <td class="source followlines-btn-parent"><a href="#l31"> 31</a> <span class="kn">print</span><span class="p">(</span><span class="s">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></td> |
849 </tr> | |
850 <tr id="l32" class="thisrev"> | |
851 <td class="annotate parity0"> | |
852 | |
853 <div class="annotate-info"> | |
854 <div> | |
855 <a href="/annotate/687f2d169546/primes.py#l32"> | |
856 687f2d169546</a> | |
857 a | |
858 </div> | |
859 <div><em>test</em></div> | |
860 <div>parents: </div> | |
861 <a href="/diff/687f2d169546/primes.py">diff</a> | |
862 <a href="/rev/687f2d169546">changeset</a> | |
863 </div> | |
864 </td> | |
865 <td class="source followlines-btn-parent"><a href="#l32"> 32</a> </td> | |
847 </tr> | 866 </tr> |
848 </tbody> | 867 </tbody> |
849 </table> | 868 </table> |
850 </div> | 869 </div> |
851 </div> | 870 </div> |