Skip to content

Instantly share code, notes, and snippets.

@shieldsd
shieldsd / euler41.py
Created April 18, 2012 13:30
Project Euler #41
from itertools import chain
from math import sqrt
def comb(l):
if len(l) == 0:
yield []
else:
for i in range(len(l)):
for cc in comb(l[:i] + l[i + 1:]):
yield [l[i]] + cc
@shieldsd
shieldsd / euler42.py
Created April 18, 2012 13:34
Project Euler #42
from math import sqrt
def istriangle(n):
return (sqrt(8 * n + 1) - 1) / 2 % 1 == 0
words = open('words.txt').readline().replace('"', '').split(',')
print sum(1 for _ in (filter(lambda x: istriangle(x),
(sum(ord(c) - ord('A') + 1 for c in w)
for w in words))))
@shieldsd
shieldsd / euler43.py
Created April 18, 2012 13:55
Project Euler #43
def comb(l):
if len(l) == 0:
yield []
else:
for i in range(len(l)):
for cc in comb(l[:i] + l[i + 1:]):
yield [l[i]] + cc
def combn(n):
l = [c for c in str(n)]
return [int(''.join(x)) for x in comb(l)]
@shieldsd
shieldsd / euler44.py
Created April 18, 2012 13:57
Project Euler #44
from math import sqrt
from itertools import count
from itertools import islice
def f(n): return n * (3 * n - 1) / 2 # nth pentagonal
def p(n): return not ((sqrt(24 * n + 1) + 1) / 6) % 1 # is pentagonal
print islice((abs(f(i) - f(j))
for i in count(2)
for j in xrange(i - 1, 1, -1)
@shieldsd
shieldsd / euler45.py
Created April 18, 2012 13:58
Project Euler #45
from math import sqrt
from itertools import islice
from itertools import count
def pentagonal(n):
return not ((sqrt(24 * n + 1) + 1) / 6) % 1
def hexagonal(n):
return not ((sqrt(8 * n + 1) + 1) / 4) % 1
@shieldsd
shieldsd / euler46.py
Created April 20, 2012 15:48
Project Euler #46
from itertools import takewhile, count, imap
from math import sqrt
from operator import and_
def twicesq(n):
return takewhile(lambda x: x < n,
(x * x * 2 for x in count(1)))
def isprime(n):
for x in range(2, int(sqrt(n)) + 1):
@shieldsd
shieldsd / euler47.py
Created April 20, 2012 15:49
Project Euler #47
from itertools import count, islice
from operator import and_
def factorise(n):
result = []
check = 2
while (check * check <= n):
if n % check == 0:
result.append(check)
n /= check
@shieldsd
shieldsd / euler48.py
Created April 20, 2012 15:50
Project Euler #48
print str(sum(i ** i for i in xrange(1, 1001)))[-10:]
@shieldsd
shieldsd / euler49.py
Created April 20, 2012 15:50
Project Euler #49
from math import sqrt
from itertools import takewhile, dropwhile, count
def comb(l):
if len(l) == 0:
yield []
else:
for i in range(len(l)):
for cc in comb(l[:i] + l[i + 1:]):
yield [l[i]] + cc
@shieldsd
shieldsd / euler50.py
Created April 20, 2012 15:51
Project Euler #50
from math import sqrt
from itertools import takewhile, dropwhile, count
def prime():
primes = []
for n in count(2):
composite = 0
for p in primes:
if not n % p:
composite = 1