Prova do Google Developer Day 2011

A exemplo do Erick Sasse, resolvi fazer também a prova do Google Developer Day 2011. A prova faz parte do processo de inscrição no evento e serve para selecionar os inscritos, caso haja mais inscrições que vagas disponíveis. Ela é opcional, mas os que a fizerem terão preferência se não houver vagas suficientes. Mesmo não pretendendo participar do evento, a prova me pareceu um desafio interessante. A prova é composta basicamente de cinco questões que envolvem manipulação de strings. Nela, são apresentados dois textos escritos num idioma fictício, o Googlon. Cada usuário recebe um conjunto de palavras diferentes. Portanto, as respostas são únicas para cada inscrição.

TDD

Com base nos dados fornecidos na própria prova, foi possível ter uma base para certificar-se das respostas. E o TDD se encaixou perfeitamente neste problema em especial, pois permitiu implementar os cálculos e conferir os resultados com os exemplos do texto antes de elaborar as respostas específicas. Por exemplo:

  • Contar o número de preposições no texto B: “existem 69 preposições no texto A” (1º teste);
  • Contar o número de verbos no texto B: “no texto A existem 82 verbos, dos quais 62 estão em primeira pessoa” (2º e 3º testes);
  • Obter a lista de vocabulário do texto B: foi dada a lista de vocabulário do texto A (4º teste);
  • Obter a quantidade de “números bonitos” no texto B: “No texto A existem 115 números bonitos distintos” (5º teste).

Para entender melhor, veja a prova aqui.
O código fonte da solução pode ser acessado neste repositório.

Em resumo, para cada questão, foi criado um teste específico para responder somente o que foi pedido. Aliás, não faz sentido utilizar TDD se não for assim: não codificar mais do que o necessário para fazer os testes passarem. Depois disto, vem as refatorações. Poderiam ter sido feitos muitos outros testes mas, como o foco era responder às questões, tudo foi feito pensando nisso.

Apesar de ter usado TDD, a experiência ensina que nem tudo é o melhor sempre. Pode-se até fazer testes unitários sem necessariamente desenvolver a solução com TDD. Uma coisa é mais que certa: testes são necessários e nunca são suficientes. Lembro-me de um professor que dizia: “Não existem sistemas corretos. Existem sistemas mal testados”. Em outra oportunidade, vou aprofundar a discussão sobre o assunto.

Até a próxima!

[Atualização: 22 de agosto de 2011]

Muitas pessoas tem chegado a este post através de pesquisas como “respostas da provinha google developer day” ou “resposta google developer day brasil 2011”. Como disse acima, as respostas não são as mesmas para todo mundo, mas o código fonte pode ser facilmente adaptado para responder qualquer variação do teste. Vale a pena tentar fazer mas o código está aí para quem quiser consultar.

Anúncios

7 comentários sobre “Prova do Google Developer Day 2011

  1. ordem_zerg = ‘tshjmpnzwlrcbxkqvdgf’
    ordem_normal = ‘abcdefghijklmnopqrstuvxz’

    lista = []
    for x in txtB:
    lista.append(x)
    lista_nova = []
    palavra_nova = ”
    for palavra in lista:
    x = 0
    palavra_nova = ”
    while x < len(palavra):
    palavra_nova = palavra_nova + ordem_normal[ordem_zerg.index(palavra[x])]
    x = x + 1
    lista_nova.append(palavra_nova)
    lista_nova = sorted(lista_nova)

    lista_nova2 = []
    palavra_nova2 = ''
    for palavra in lista_nova:
    x = 0
    palavra_nova2 = ''
    while x < len(palavra):
    palavra_nova2 = palavra_nova2 + ordem_zerg[ordem_normal.index(palavra[x])]
    x = x + 1
    lista_nova2.append(palavra_nova2)

    print(lista_nova2)

    Curtir

  2. QUESTÃO E:

    ordem_zerg = ‘tshjmpnzwlrcbxkqvdgf’
    lista_nova = []
    for palavra in txtB:
    if len(palavra) == len(set(palavra)):
    lista_nova.append(palavra)
    lista_soma = []
    soma = 0
    for palavra in lista_nova:
    y = 0
    soma = 0
    while y < len(palavra):
    soma = soma + int(ordem_zerg.index(palavra[y]))
    y = y + 1
    if soma % 2 == 0:
    lista_soma.append(soma)
    print(len(lista_soma))

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s