Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import timeit
- import functools
- def timer(f):
- @functools.wraps(f)
- def wrapper(*args):
- start = timeit.time.perf_counter()
- result = f(*args)
- end = timeit.time.perf_counter()
- time = end - start
- #print("Czas działania ", f.__name__, "=", round(time, 3))
- return result, time
- return wrapper
- @timer
- def pierwsze_imperatywna(n):
- prime = [1] * (n + 1)
- result = []
- i = 2
- while i <= n:
- if prime[i]:
- result.append(i)
- j = i + i
- while j <= n:
- prime[j] = 0
- j += i
- i += 1
- return result
- @timer
- def pierwsze_skladana(n):
- return [i for i in range(2, n + 1) if not
- len([j for j in range(2, i) if not i % j])]
- @timer
- def pierwsze_funkcyjna(n):
- def isprime(x):
- i = 2
- while i * i <= x:
- if not x % i:
- return False
- i += 1
- return True
- return list(filter(isprime, range(2, n + 1)))
- def primegen(n):
- def isprime(x):
- i = 2
- while i * i <= x:
- if not x % i:
- return False
- i += 1
- return True
- for i in range(2, n + 1):
- if isprime(i):
- yield i
- @timer
- def pierwsze_generator(n):
- for _ in primegen(n):
- pass
- def testy():
- formatter = "{: >11}|"
- print(formatter.format(""), formatter.format("imperatywna"),
- formatter.format("funkcyjna"), formatter.format("skladana"), formatter.format("iterator"))
- for i in (10**j for j in range(2, 7)):
- print(formatter.format(i), formatter.format(round(pierwsze_imperatywna(i)[1], 3)),
- formatter.format(round(pierwsze_imperatywna(i)[1], 3)), formatter.format(round(pierwsze_skladana(i)[1], 3)),
- formatter.format(round(pierwsze_generator(i)[1], 3)))
- testy()
- def bingen(n, m):
- number = 0
- end = 2**(m*n)
- while number < end:
- tmp = list(bin(number)[2:])
- brak = n*m - len(tmp)
- number += 1
- yield ['0']*brak + tmp
- H = (2, 1, 3, 1, 1)
- V = (1, 3, 1, 2, 1)
- def check(pic, H, V):
- n = len(H)
- m = len(V)
- HH = [0] * n
- VV = [0] * m
- for idx, i in enumerate(pic):
- if i == '1':
- HH[idx % m] += 1
- VV[idx // m] += 1
- for h, hh in zip(H, HH):
- if h != hh:
- return False
- for v, vv in zip(V, VV):
- if v != vv:
- return False
- return True
- for i in bingen(5, 5):
- if check(i, H, V):
- v = len(V)
- for idx, i in enumerate(i):
- if idx % v == 0 and idx // v > 0:
- print()
- if i == '1':
- print(u"\u001b[38;5;75m\u25A0", end=" ")
- else:
- print(u"\u001b[38;5;232m\u25A0", end=" ")
- print("\n\n\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement