Da persistência de idéias ruins                                  1
O alunodef palindromo(s):    for i in range(len(s)//2):        if s[i] != s[-(i+1)]:            return False    return Tru...
O pythonistadef palindromo(s):    return all([ s[i] == s[-(i+1)]                 for i in range(len(s)//2)])              ...
O pythonista mais espertodef palindromo(s):    return all(( s[i] == s[-(i+1)]                 for i in range(len(s)//2))) ...
Aprendeu Lisp (ou Ruby)def palindromo(s):   return all(map(lambda t: t[0] == t[1],                     [ (s[i], s[-(i+1)])...
Aprendeu Erlang (ou Haskell, ou Scheme)def palindromo(s):    if len(s) <= 1:        return True    elif s[0] == s[-1]:    ...
Tem pressa (e Python 3)from concurrent.futures.thread import ThreadPoolExecutordef palindromo(s):    with ThreadPoolExecut...
Tem pressa (e aprendeu sobre o GIL)from concurrent.futures.process import ProcessPoolExecutordef iguais(t):    return t[0]...
Gosta de poesiadef palindromo(s):    return s[::-1] == s                                9
Gosta de poesia (e de matemática)def palindromo(s):    return s[:len(s)//2:-1] == s[:len(s)//2]                           ...
Recapitulando●   Aluno●   Pythonistas●   Lambdista●   Funcional●   Threadista●   Processista●   Poetas                    ...
Análise (pior caso)1.00E+001.00E-01                                                           aluno1.00E-02               ...
http://about.me/rbanffy                          13
Upcoming SlideShare
Loading in …5
×

Da persistência de idéias ruins

648 views

Published on

Uma pequena série de lição sobre como você não é tão esperto quanto pensa.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
648
On SlideShare
0
From Embeds
0
Number of Embeds
32
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Da persistência de idéias ruins

  1. 1. Da persistência de idéias ruins 1
  2. 2. O alunodef palindromo(s): for i in range(len(s)//2): if s[i] != s[-(i+1)]: return False return True 2
  3. 3. O pythonistadef palindromo(s): return all([ s[i] == s[-(i+1)] for i in range(len(s)//2)]) 3
  4. 4. O pythonista mais espertodef palindromo(s): return all(( s[i] == s[-(i+1)] for i in range(len(s)//2))) 4
  5. 5. Aprendeu Lisp (ou Ruby)def palindromo(s): return all(map(lambda t: t[0] == t[1], [ (s[i], s[-(i+1)]) for i in range(len(s)//2)])) 5
  6. 6. Aprendeu Erlang (ou Haskell, ou Scheme)def palindromo(s): if len(s) <= 1: return True elif s[0] == s[-1]: return palindromo(s[1:-1]) else: return False 6
  7. 7. Tem pressa (e Python 3)from concurrent.futures.thread import ThreadPoolExecutordef palindromo(s): with ThreadPoolExecutor(16) as executor: return all(executor.map( lambda t: t[0] == t[1], [ (s[i], s[-(i+1)]) for i in range(len(s)//2)])) 7
  8. 8. Tem pressa (e aprendeu sobre o GIL)from concurrent.futures.process import ProcessPoolExecutordef iguais(t): return t[0] == t[1]def palindromo(s): with ProcessPoolExecutor() as executor: return all(executor.map( iguais, [ (s[i], s[-(i+1)]) for i in range(len(s)//2)])) 8
  9. 9. Gosta de poesiadef palindromo(s): return s[::-1] == s 9
  10. 10. Gosta de poesia (e de matemática)def palindromo(s): return s[:len(s)//2:-1] == s[:len(s)//2] 10
  11. 11. Recapitulando● Aluno● Pythonistas● Lambdista● Funcional● Threadista● Processista● Poetas 11
  12. 12. Análise (pior caso)1.00E+001.00E-01 aluno1.00E-02 pythonista pythonista esperto lambdista1.00E-03 funcional threadista processista poeta1.00E-04 poeta esperto1.00E-051.00E-06 10 100 1000 10000 100000 1000000 12
  13. 13. http://about.me/rbanffy 13

×