def generate_program(nb_variables, length):
s = ""
variables = set()
+
while len(s) < length:
v = random_var(nb_variables=nb_variables)
s += v + "=" + random_expr(variables, budget=20) + ";"
variables.add(v)
+
return s, variables
return results
-def generate_sequences(nb, nb_variables=5, length=20, randomize_length=False):
+def generate_sequences(nb, nb_variables=5, length=20):
assert nb_variables <= 26
sequences = []
+ result_max = 99
+
for n in range(nb):
+ # We take length itself half of the time, and uniform between
+ # 1 and length otherwise. The actual length can be slightly
+ # greater
+
+ l = min(length, 1 + torch.randint(length * 2, (1,)).item())
result = None
- while result == None or max(result.values()) > 100:
- l = length
- if l > 5 and randomize_length:
- l = 5 + torch.randint(l - 5, (1,)).item()
+ while result == None or max(result.values()) > result_max:
p, v = generate_program(nb_variables, l)
v = ", ".join(['"' + v + '": ' + v for v in v])
ldict = {}
import time
start_time = time.perf_counter()
- sequences = generate_sequences(1000, length=30)
+ sequences = generate_sequences(1000, length=40)
end_time = time.perf_counter()
for s in sequences[:10]:
print(s)