Exemplo n.º 1
0
def naive_transition_matrix( n ):
    states = [ tuple(state) for state in euler.permutations( range(1,n+1) ) ]
    m = len(states)
    mat = numpy.zeros( (m,m) )
    state2id = dict(zip(states, range(len(states))))
    id2state = dict(zip(range(len(states)), states))
    choices = list(euler.choose(range(n), 2))
    for u in states[1:]:
        for i, j in choices:
            v = list(u)
            v[i], v[j] = v[j], v[i]
            v = tuple(v)
            mat[ state2id[u], state2id[v] ] = 1.0/len(choices)
    return numpy.matrix(mat)
Exemplo n.º 2
0
    seq = [[x[i] for i in y] for y in lst]
    return seq


def clockwise(seq):
    for i in range(1, 5):
        if seq[0][0] >= seq[i][0]:
            return False
    return True


def flatten(seq):
    lst = ""
    for i in seq:
        for j in i:
            lst += str(j)
    return lst


ran = range(10)
ran.reverse()
ran = [i + 1 for i in ran]
for i, v in enumerate(euler.permutations(ran)):
    ss = solset(v)
    sums = [sum(i) for i in ss]
    if alleq(sums) and clockwise(ss):
        print v, ss, sums, clockwise(ss)
        gon = flatten(ss)
        if len(gon) == 16:
            print gon
Exemplo n.º 3
0
    seq = [[x[i] for i in y] for y in lst]
    return seq


def clockwise(seq):
    for i in range(1, 5):
        if seq[0][0] >= seq[i][0]:
            return False
    return True


def flatten(seq):
    lst = ''
    for i in seq:
        for j in i:
            lst += str(j)
    return lst


ran = range(10)
ran.reverse()
ran = [i + 1 for i in ran]
for i, v in enumerate(euler.permutations(ran)):
    ss = solset(v)
    sums = [sum(i) for i in ss]
    if alleq(sums) and clockwise(ss):
        print v, ss, sums, clockwise(ss)
        gon = flatten(ss)
        if len(gon) == 16:
            print gon
Exemplo n.º 4
0
import euler

for i in range(9):
    print '----'
    lst = range(1, i + 2)
    lst.reverse()
    for perm in euler.permutations(lst):
        v = euler.seqToInt(perm)
        if euler.isprime(v):
            print v
            break
Exemplo n.º 5
0
import euler

r = xrange(1, 1000001)
s = None
for i, v in zip(r, euler.permutations(range(10))):
    if i == 1000000:
        s = v
        break

s = [str(i) for i in s]
s = ''.join(s)
print s
Exemplo n.º 6
0
import euler

r = xrange(1,1000001)
s = None
for i,v in zip(r,euler.permutations(range(10))):
    if i == 1000000:
        s = v
        break

s = [ str(i) for i in s ]
s = ''.join(s)
print s
Exemplo n.º 7
0
import euler

for i in range(9):
    print '----'
    lst = range(1,i+2)
    lst.reverse()
    for perm in euler.permutations(lst):
        v = euler.seqToInt(perm)
        if euler.isprime(v):
            print v
            break
Exemplo n.º 8
0
#!/usr/bin/env python

# Copyright (c) 2008 by Steingrim Dovland <*****@*****.**>

from itertools import count, izip
from euler import permutations, findfirst

# A permutation is an ordered arrangement of objects. For example, 3124
# is one possible permutation of the digits 1, 2, 3 and 4. If all of the
# permutations are listed numerically or alphabetically, we call it
# lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
#
# 012   021   102   120   201   210
#
# What is the millionth lexicographic permutation of the digits 0, 1, 2,
# 3, 4, 5, 6, 7, 8 and 9?

p = permutations('0123456789')
x = findfirst(izip(count(1), p), lambda x: x[0] == 1*1000*1000)
print ''.join(x[1])

Exemplo n.º 9
0
                for j in impl(i,digits-1):
                    yield [i] + j
    for i in impl(minv,digits):
        yield euler.seqToInt(i)

res = []
for i in set(increasingIter(0,6)):
    fc  = factorialChain(i)
    fcl = len(fc)-1
    if fcl == 60:
        res.append( i )

final = []
for r in res:
    s = set()
    for p in euler.permutations(euler.intToSeq(r)):
        v = euler.seqToInt(p)
        if factorialChainLength(v) == 60:
            s.add(v)
    for item in s:
        final.append(item)

cnt = 0
final = list(set(final))
final.sort()
for item in final:
    cnt += 1
    print cnt,item,factorialChainLength(item)

print 'soln',cnt
Exemplo n.º 10
0
import euler

lst = []
for a in range(1,8):
    for b in range(a+1,9):
        lst.append( (range(0,a),range(a,b),range(b,9)) )

#for i in lst:
#    print i

def seqToInt( seq ):
    return int( ''.join( [ str(i) for i in seq ] ) )

res = set()
for i in euler.permutations(range(1,10)):
    for a,b,c in lst:
        a = seqToInt([ i[j] for j in a ])
        b = seqToInt([ i[j] for j in b ])
        c = seqToInt([ i[j] for j in c ])
        if a*b == c:
            res.add(c)
            print a,b,c, '-', list(res)

print res

Exemplo n.º 11
0
def int_permutations(x):
    return map(int, map(''.join, permutations(str(x))))
Exemplo n.º 12
0
    for i in impl(minv, digits):
        yield euler.seqToInt(i)


res = []
for i in set(increasingIter(0, 6)):
    fc = factorialChain(i)
    fcl = len(fc) - 1
    if fcl == 60:
        res.append(i)

final = []
for r in res:
    s = set()
    for p in euler.permutations(euler.intToSeq(r)):
        v = euler.seqToInt(p)
        if factorialChainLength(v) == 60:
            s.add(v)
    for item in s:
        final.append(item)

cnt = 0
final = list(set(final))
final.sort()
for item in final:
    cnt += 1
    print cnt, item, factorialChainLength(item)

print 'soln', cnt
Exemplo n.º 13
0
import euler

lst = []
for a in range(1, 8):
    for b in range(a + 1, 9):
        lst.append((range(0, a), range(a, b), range(b, 9)))

#for i in lst:
#    print i


def seqToInt(seq):
    return int(''.join([str(i) for i in seq]))


res = set()
for i in euler.permutations(range(1, 10)):
    for a, b, c in lst:
        a = seqToInt([i[j] for j in a])
        b = seqToInt([i[j] for j in b])
        c = seqToInt([i[j] for j in c])
        if a * b == c:
            res.add(c)
            print a, b, c, '-', list(res)

print res