Ainda há vida.

16jan11

O dia foi bem legal. Paintball pela tarde com o pessoal da faculdade e a noite revi Anakin, O perturbado, se revoltar contra os Jedi em  Star Wars Episódio III, A Vingança do Sith.

Certo, mas o post não tem nada haver com o que falei. Queria dizer é que apesar da minha ausência, não esqueci do blog. Só estou com pouco sem tempo devido as minhas obrigações com a faculdade, iniciação científica e com o lazer – ninguém é de ferro –  , mas em breve vou está postando coisas legais, eu prometo.

Bem, fora isso eu queria mostrar toda minha alegria ao compartilhar com vocês que Python pela segunda vez ganhou o Tiobe Programming Language AwardChupa bambizada! Python eoo! .

Para finalizar vou deixar um script em python que acabei de fazer para o Problema 22 do Project Euler, acho que está entendível uma vez que a maioria das coisas que usei já expliquei aqui no blog.

Problem 22

Using names.txt (right click and ‘Save Link/Target As…’), a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.

For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would obtain a score of 938 × 53 = 49714.

What is the total of all the name scores in the file?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from urllib import urlopen
import string

#Pegar os arquivos com os nomes
nomes = urlopen('http://projecteuler.net/project/names.txt').read()

# partir a string e filtrar o resultado
nomes = filter(lambda x: x not in string.punctuation,nomes.split(','))

# retirar as aspas e transformar os nomes em minúsculo para facilitar a
# busca da posicao da letra.
nomes = map(lambda x: x.strip('"').lower(),nomes)
nomes.sort() # ordenar

# Fazer a soma de todos os nomes utilizando a regra do problema.
print sum(map(lambda (posicao,nome): (posicao+1)*sum(map(lambda letra: string.letters.find(letra)+1,nome)),enumerate(nomes)))
#Resposta: 871198282
Anúncios


No Responses Yet to “Ainda há vida.”

  1. Deixe um comentário

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


%d blogueiros gostam disto: