Escolar Documentos
Profissional Documentos
Cultura Documentos
def _p1_reduce_numbers(numbers):
assert len(numbers) > 0, "empty list of numbers in _p1_reduce_numbers"
from array import array
if method == "auto":
LOG2 = log2(i_n - i_0)
method = "tree" if (LOG2 > len(numbers)) else "dumb"
if verbose:
print(method, "[factors: {} ; interval:
2**{:.2f}]".format(len(numbers), LOG2), end=" ; ")
if method == "tree":
return p1_general(numbers, i_0, i_n)
if method == "dumb":
return p1_dumb(numbers, i_0, i_n)
if method == "memkill":
return p1_memkill(numbers, i_0, i_n)
def p1_tree_printer_times():
from util import euler_timer, plot_times
ii = tuple(range(4,13))
L = tuple(euler_timer(p1_tree_printer, (range(1, k), 0, "", False), 5) for k
in ii)
if verbose: print()
# Teste 1
if False:
params = ([3, 5, 6, 7, 9, 12], 1, 10**5)
print(p1_dumb(*params) == p1_general(*params) ==
p1_with_combinations(*params))
# Teste 2
if False:
methods = ("auto", "dumb", "memkill", "tree")
results, times = p1_demo(methods, verbose=0)
print("RESULTS:")
for method in methods:
print(method, *results[method], sep="\n ", end="\n\n")
print("\nTIMES:")
for method in methods:
print(method, *times[method], sep="\n ", end="\n\n")
if __name__ == "__main__":
print(p1(numbers=[3, 5], i_0=1, i_n=1000, method="auto", verbose=0))