Ejemplo n.º 1
0
def number(theDigs) :
	#global depth
	if len(theDigs) == 0 :
		#print depth
		return 1
	s = 0
	for digs2 in powerset(theDigs) :
		if digs2:
			count = 0
			for digs in allArrangements(digs2) :
				num = digitsToNum(digs)
				if isPrime(num) :
					count += 1
			if count > 0 :
				#for f in range(depth) :
				#	print " ",
				#print digs, num
				#depth.append(num)
				next = [x for x in theDigs if x not in digs]
				#print num, next
				s += count * number(next)
				#depth = depth[:-1]
	return s
Ejemplo n.º 2
0
		for a3 in range(a2+1, 47) :
			for a4 in range (a3+1, 47) :
				for a5 in range(a4+1, 47) :
					for a6 in range(a5+1, 47) :
						for a7 in range(a6+1, 47) :
							bad = False
							s = [a1,a2,a3,a4,a5,a6,a7]
							i = 1
							while (2*i + 1 <= len(s)) :
								if sum(s[:i+1]) < sum(s[-i:]) :
									bad = True
									break
								i += 1
							if bad :
								continue
							sums = set([])
							for k in powerset(s)[1:-1] :
								p = sum(k)
								if p in sums :
									bad=True
									break
								else :
									sums.add(p)
							else :
								l = sum(s)
								print s
								if l < minsum :
									minsum = l
									best = s
print best
Ejemplo n.º 3
0
# Find the number of lines in Euler105.txt that obey the special sumset property

from useful import powerset

total = 0
for line in open("Euler105.txt") :
	s = map(int, line.split(","))
	print s,"",
	bad = False
	for subs in powerset(s)[1:-1] :
		g = set(subs)
		comp = list(set(s) - g)
		for altSet in powerset(comp)[1:] :
			diff = (sum(g) - sum(altSet))
			if diff == 0 or float(len(g) - len(altSet)) / diff < 0 :
				print g, altSet,
				print "No!"
				bad = True
				break
		if bad :
			break
	else :
		print "Yes!",
		k = sum(s)
		total += k
		print k
print total