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
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)))
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)))
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)
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
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)
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
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
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
def main(nums, k): return num(digits(sum(nums))[:k])
def main(): return num(max(combinations(range(10), 4), key=countStreak))
def circular(p): d = digits(p) return all( primes.isPrime(num(d[i:] + d[:i])) for i in range(1, len(d)))
def seq(n, lim = 54): for _ in range(lim): n += num(reversed(digits(n))) yield n
def circular(p): d = digits(p) return all(primes.isPrime(num(d[i:] + d[:i])) for i in range(1, len(d)))
def seq(n, lim=54): for _ in range(lim): n += num(reversed(digits(n))) yield n
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)