Home > Project Euler, python > Problem euler #42

Problem euler #42

The nth term of the sequence of triangle numbers is given by, tn = n/2(n+1);
so the first ten triangle numbers are:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

By converting each letter in a word to a number corresponding to its
alphabetical position and adding these values we form a word value.
For example, the word value for SKY is 19 + 11 + 25 = 55 = t10.
If the word value is a triangle number then we shall call the word a
triangle word.

Using words.txt (right click and 'Save Link/Target As...'), a 16K text
file containing nearly two-thousand common English words, how many are
triangle words?

Analisi:

La funzione con la quale calcolerò la somma dei numeri di posizione
delle lettere di ogni parola è:

def wordsum(string):
    return sum([AB.find(x.upper()) for x in string])

come insegna MaryPoppins, la parola più lunga è:
‘supercalifragilistichespiralidoso’
La funzione mi dà come risultato su questa parola, 367.

A questo punto genero i primi numeri triangolari minori uguali a 367.

Ciclando sulle parole del file, otterrò la somma delle posizioni dei
caratteri, e controllerò se tale somma è un numero triangolare.

In python:

import time

ts = time.time()

AB = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ"

def wordsum(string):
    return sum([AB.find(x.upper()) for x in string])
    
def triangle_nums():
    triangles = []
    iterator = 1
    num = 1
    while num < 367: # 'supercalifragilistichespiralidoso' è 367
        triangles.append(num)
        iterator += 1
        num += iterator
    return triangles

f = open(r'words.txt')
row = f.readline()
f.close()
words = row.split(',')

trs = triangle_nums()

count = 0
for word in words:
    word = word.replace('"', '')
    if wordsum(word) in trs: count += 1

print "problem euler 42: {} \nelapsed time: {}sec".format(count, time.time() - ts)
Categorie:Project Euler, python
  1. novembre 29, 2014 alle 6:12 am

    Hey there! Your webpage is running slow if you ask me, this kind of consumed sort of a minute or
    two to successfully reload, I do not know whether it’s just me or maybe your web-site on the other hand google loaded
    for me. However thanks for putting up great article. Almost everyone who stumbled on this
    website should have observed this article honestly handy.
    I am hoping I’ll be able to get further remarkable information and I also
    should complement your site simply by telling you have done good writing.
    Soon after taking a look at the blog post, I have bookmarked your webblog.

  1. No trackbacks yet.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: