projects
/
picoclvr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update.
[picoclvr.git]
/
expr.py
diff --git
a/expr.py
b/expr.py
index
7b31b8c
..
f294d68
100755
(executable)
--- a/
expr.py
+++ b/
expr.py
@@
-44,11
+44,12
@@
def random_expr(variables, budget):
def generate_program(nb_variables, length):
s = ""
variables = set()
def generate_program(nb_variables, length):
s = ""
variables = set()
- length = min(length, 1+torch.randint(length*2, (1,)).item())
+
while len(s) < length:
v = random_var(nb_variables=nb_variables)
s += v + "=" + random_expr(variables, budget=20) + ";"
variables.add(v)
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 s, variables
@@
-61,15
+62,19
@@
def extract_results(seq):
return results
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 = []
assert nb_variables <= 26
sequences = []
+ result_max = 99
+
for n in range(nb):
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
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 = {}
p, v = generate_program(nb_variables, l)
v = ", ".join(['"' + v + '": ' + v for v in v])
ldict = {}