示例#1
0
def good(p):
    if p < 10:
        return False
    d = digits(p)
    for i in range(1, len(d)):
        if not primes.isPrime(num(d[:i])):
            return False
        if not primes.isPrime(num(d[i:])):
            return False
    return True
示例#2
0
def good(p):
    if p < 10:
        return False
    d = digits(p)
    for i in range(1, len(d)):
        if not primes.isPrime(num(d[:i])):
            return False
        if not primes.isPrime(num(d[i:])):
            return False
    return True
示例#3
0
def palindromes(base = 10):
	def fronts(r, base):
		if r == 0:
			yield tuple()
		else:
			for first in range(1, base):
				for rest in product(range(base), repeat = r - 1):
					yield tuple([first]) + rest
	for r in count():
		for half in fronts(r, base):
			for middle in range(base):
				yield num(chain(half, [middle], reversed(half)))
		for half in fronts(r + 1, base):
			yield num(chain(half, reversed(half)))
示例#4
0
def palindromes(base=10):
    def fronts(r, base):
        if r == 0:
            yield tuple()
        else:
            for first in range(1, base):
                for rest in product(range(base), repeat=r - 1):
                    yield tuple([first]) + rest

    for r in count():
        for half in fronts(r, base):
            for middle in range(base):
                yield num(chain(half, [middle], reversed(half)))
        for half in fronts(r + 1, base):
            yield num(chain(half, reversed(half)))
示例#5
0
def fillMask(mask, skip, vars):
	digi = (n for n in range(10) if n != skip)
	for k in product(digi, repeat=vars):
		for indices in combinations(range(len(mask)), vars):
			m = mask[:]
			for i, d in enumerate(k):
				m[indices[i]] = d
			if m[0] != 0:
				yield num(m)
示例#6
0
 def seq(k):
     for m in range(1, k + 4):
         for p in palins(range(10), m):
             if p[0] == 0:
                 continue
             n = num(p)
             for d in primes.divisors(n):
                 if len(digits(d)) == k and len(digits(n // d)) == k:
                     yield n
示例#7
0
 def results():
     for k in squaresByLen:
         squares = squaresByLen[k]
         for words in anagramsByLen[k]:
             for word1, word2 in combinations(words, 2):
                 sw = list(swaps(word1, word2))
                 for sq in squares:
                     n = num(apply(digits(sq), sw))
                     if n in squares:
                         yield max(n, sq)
示例#8
0
def main():
	rv = 0
	limit = next(n for n in count() if pow(10, n) - 1 > factorial(9) * n) - 1
	for r in range(2, limit):
		for d in product(range(10), repeat=r):
			if d[0] == 0:
				continue
			n = num(d)
			if n == sum(map(factorial, d)):
				rv += n
	return rv
示例#9
0
def main():
    rv = 0
    limit = next(n for n in count() if pow(10, n) - 1 > factorial(9) * n) - 1
    for r in range(2, limit):
        for d in product(range(10), repeat=r):
            if d[0] == 0:
                continue
            n = num(d)
            if n == sum(map(factorial, d)):
                rv += n
    return rv
示例#10
0
def main(exp):
	rv = 0
	for r in count(2):
		for d in product(range(10), repeat=r):
			if d[0] == 0:
				continue
			n = num(d)
			if (n - sum(d)) % exp: # assume exp is prime and use fermats theorem
				continue
			if n == sum(b ** exp for b in d):
				rv += n
		if 10 ** r > 9 ** exp * r: # if max rhs smaller than min lhs
			break
	return rv
示例#11
0
def main(exp):
    rv = 0
    for r in count(2):
        for d in product(range(10), repeat=r):
            if d[0] == 0:
                continue
            n = num(d)
            if (n - sum(d)
                ) % exp:  # assume exp is prime and use fermats theorem
                continue
            if n == sum(b**exp for b in d):
                rv += n
        if 10**r > 9**exp * r:  # if max rhs smaller than min lhs
            break
    return rv
示例#12
0
def main(nums, k):
    return num(digits(sum(nums))[:k])
示例#13
0
def main():
    return num(max(combinations(range(10), 4), key=countStreak))
示例#14
0
def main():
	return num(max(combinations(range(10), 4), key=countStreak))
示例#15
0
def main(nums, k):
	return num(digits(sum(nums))[:k])
示例#16
0
 def circular(p):
     d = digits(p)
     return all(
         primes.isPrime(num(d[i:] + d[:i])) for i in range(1, len(d)))
示例#17
0
def seq(n, lim = 54):
	for _ in range(lim):
		n += num(reversed(digits(n)))
		yield n
示例#18
0
	def circular(p):
		d = digits(p)
		return all(primes.isPrime(num(d[i:] + d[:i])) for i in range(1, len(d)))
示例#19
0
def seq(n, lim=54):
    for _ in range(lim):
        n += num(reversed(digits(n)))
        yield n
示例#20
0
import lib
# 1.заставить пользователя ввести целое число
lib.num()

# 2.Дан производный словарь d (находится в соседнем файле).
# вывести значения ключей (ключ-значение) если значение не является словарём,
# если значение - словарь, то и для него вывести значения ключей (ключ-значение)
lib.out_rec(lib.d)

# 3.Дан лист значений (находится в соседнем файле),
# преобразовать его в словарь следуйщим образом:
# ключ - значение обьекта в листе, значение - тип обьекта в листе
lib.soul(lib.l)

# 4.Дан дикт с параметрами пользователя. Все ключи - опциональные.
# Напишите функцию, которая принимает именованные аргументы name, email, phone, birthday,
# определяет наличие необходимых аргументов для того чтобы поздравить пользователя с ДР
# (как минимум дата, имя и способ передачи поздравления).
# Учтите, что в дикте могут отсутствовать нужные ключи и присутствовать лишние
lib.empty(lib.user)