/
tableaux-generation.py
57 lines (45 loc) · 1.51 KB
/
tableaux-generation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import sys
from sage.all import *
def generateRandomSemistandardTableaux (size, max_entry_val, to_generate):
v = []
for i in range(to_generate):
v.append(SemistandardTableaux(size, max_entry=max_entry_val).random_element())
return v
def getAllSemistandardTableaux (size):
return SemistandardTableaux(size).list ()
def writeTableauxToFile (t, fn):
f = open(fn,"w")
f.write("semistandard_tableaux\n")
f.write("0\n")
f.write(str(len(t)) + "\n")
for row in reversed(t):
for e in row:
f.write("" + str(e) + "\n")
# f.write("\n")
f.close()
def writeTableauxToDirectory (tableaux, directory):
i = 0
for t in tableaux:
fn = directory + "" + str(i) + ".sst"
writeTableauxToFile(t,fn)
i = i + 1
def showHelp (name):
print "Usage: " + name + " <size> <output-directory> [all | random <max-entry-value> <number-to-generate>]"
sys.exit(0)
if __name__ == "__main__":
argv = sys.argv
if len(sys.argv) <= 3:
showHelp (argv[0])
size = int(argv[1])
output_directory = argv[2]
tableaux = []
if argv[3] == "all":
tableaux = getAllSemistandardTableaux(size)
elif argv[3] == "random":
max_entry_val = int(argv[4])
nr_to_generate = int(argv[5])
tableaux = generateRandomSemistandardTableaux (size, max_entry_val, nr_to_generate)
else:
print "Invalid Option"
writeTableauxToDirectory(tableaux, output_directory + "size_" + str(size) + "_")
sys.exit(0)