Pensamentos sobre recrutamento de pessoas espertas

Há algum tempo escrevi sobre o drama de contratar programadores aqui no Brasil. Meu drama continua, estou compilando o melhor (o pior) dos currículos recebidos, mas fica para outro post.

Em 1999 a Microsoft me contratou depois de uma entrevista que durou 5 horas precedida por uma longa entrevista por telefone. Como não quis ir para Seattle a vaga passei para um amigo meu que segue lá no DirectX até hoje, mas estou me desviando do tema de novo. O fato é que lembrei que a Microsoft tinha um estilo muito interessante de fazer entrevistas. Pensando nisso comprei o livro “Are you smart enough to work at Google” e peguei umas idéias de entrevista.

Uma bem curiosa era a seguinte: colocaram numa cidade universitária um outdoor com os seguintes dizeres:

{first 10-digit prime found in consecutive digits of e}.com

É um site. E como se sabe qual site é?

Bom a constante e, que é um número transcendente, pode ser aproximado por:

\sum_{n=0}^{i}\frac{1}{n!}

Ou então você pode usar o módulo decimal do python

from decimal import *
getcontext().prec = 6000
e = Decimal(1).exp()

Agora é só montar um programa que passe pelos 10 dígitos e calcule se é primo ou não:

import math
from decimal import *
getcontext().prec = 6000
print "Calculando e com %d digito"%getcontext().prec
e = Decimal(1).exp()
strE = e.as_tuple()[1]
strE = [str(i) for i in strE]
print "Montando crivo"
crivo = [2]
for i in xrange(99996):
   isPr = True;
   sqrtI = math.sqrt(i)
   for j in crivo:
      if (i+3)%j == 0:
              isPr = False
              break
      if (j > sqrtI):
          break
   if isPr:
      crivo.append(i+3)
 
def isPrimoC (n):
   sqrtN = math.sqrt(n)
   for j in crivo:
       if (n%j) == 0:
               return False
       if (j > sqrtN):
               return True
   return True
 
print "Procurando Primeira sequencia de 10 digitos primo"
for i in xrange(len(strE)):
        dec = int("".join(strE[i:i+10]))
        if isPrimoC(dec):
           print "Achei: %d pos(%d)"%(dec,i)
           break

Encontramos a resposta que é 7427466391 e portanto o site é: 7427466391.com

Neste site 7427466391.com havia um outro problema que gerava outro site que por fim fazia o candidato chegar na página de submeter o curriculum.

De fato é uma boa forma de fazer uma pré-seleção.

Se você tiver idéias de como fazer uma boa seleção de candidatos, compartilhe conosco.

Comments on this entry are closed.

  • Carlo Pires

    Interessante como você usou o módulo decimal para obter os dígitos de e 🙂