Skip to content

Instantly share code, notes, and snippets.

@karino2
Last active September 1, 2019 06:37
Show Gist options
  • Save karino2/132b249314d250eb85ee198992f8825f to your computer and use it in GitHub Desktop.
Save karino2/132b249314d250eb85ee198992f8825f to your computer and use it in GitHub Desktop.
char_names = ["A","B","C","E","F","G","H","I","L","M","N",
"P","R", "S","T","V","X","Y",
"a","b", "c","d", "e", "f","g","h", "i",
"j","k","l","m", "n","o","p","q","r","s","t", "u",
"v","w","x","y", "z",
"\\alpha","\\beta","\\gamma","\\phi","\\mu",
"\\lambda","\\sigma", "\\pi", "\\theta"]
binop_names = ["+", "-", "\\times", "\\div", "\\pm"]
eqop_names = ["\\geq", ">", "\\leq", "<", "="]
nonzero_num_names = [str(i) for i in range(1, 10)]
num_names = [str(i) for i in range(0, 10)]
vector_names = ["\\bm{b}", "\\bm{c}", "\\bm{p}", "\\bm{q}", "\\bm{r}", "\\bm{x}"]
other_names = ["\\mathbb{R}", "\\in", "\\subseteq", "\\{", "\\}", ",", "\\ldots"]
MathbbrS = OneOfNamesF(["\\mathbb{R}"])
SupOfRnS = OneOfNamesF(nonzero_num_names+ ["n", "m"])
RnS = SupscF(MathbbrS, SupOfRnS)
OneSymbolS = OneOfNamesF(num_names+char_names+vector_names+eqop_names+binop_names+other_names)
BaseS = OneOfNamesF(char_names + vector_names)
SupscSymS = OrF([0.9, OneOfNamesF(num_names+ ["T"])], [0.1, OneOfNamesF(char_names)])
SupS = SupscF(BaseS, SupscSymS)
SubS = SubscF(BaseS, OneOfNamesF(num_names+ char_names))
MultiplierS = OrF([0.33, OneOfNamesF(nonzero_num_names+["a", "b", "c", "d", "x", "y", "A", "B", "C"])],
[0.33, SupS],
[0.33, SubS])
TwoTermS = TwoTermF(MultiplierS, OrF([0.33, OneOfNamesF(char_names+vector_names)],
[0.33, SupS],
[0.33, SubS]))
normalBinOpS = OneOfNamesF(['+', '-', '\\times'])
rareBinOpS = OneOfNamesF(['\\div', '\\pm'])
BinopRawS = OrF([0.9, normalBinOpS],
[0.1, rareBinOpS])
otherEqOpNames = list(set(eqop_names).difference(set(["="])))
equalEqOpS = OneOfNamesF(["="])
otherEqOpS = OneOfNamesF(otherEqOpNames)
EqopRawS = OrF([0.5, equalEqOpS],
[0.5, otherEqOpS])
BinopS = ScaleF(BinopRawS, 0.6)
EqopS = ScaleF(EqopRawS, 0.6)
OneTermS = OrF(
[0.33, OneOfNamesF(num_names + char_names+vector_names)],
[0.33, SupS],
[0.33, SubS]
)
TermS = OrF(
[0.3, TwoTermS],
[0.7, OneTermS]
)
OneBinopS = HoriF(TermS, BinopS)
BinopOneS = HoriF(BinopS, TermS)
OneBinopOneS = HoriF(TermS, BinopS, TermS)
EqExpS = HoriF(TermS, BinopS, TermS, MoveLeftF(EqopS, 1000))
LinearProgramS = OrF([0.3, EqExpS],
[0.2, OneBinopOneS],
[0.1, OneBinopS],
[0.1, BinopOneS],
[0.3, TermS])
RightInS = OrF([0.33, MathbbrS], [0.4, RnS], [0.16, OneOfNamesF(["\\{"])],
[0.1, OneOfNamesF(["A", "B", "C", "E","F", "G", "H", "I","L", "M", "N", "V"])])
InExpS = HoriF(ScaleF(OneOfNamesF(["\\in"]), 0.6), RightInS)
SubseteqS = HoriF(ScaleF(OneOfNamesF(["\\subseteq"]), 0.6),
OrF([0.5, OneOfNamesF(["\\{"])],
[0.3, OneOfNamesF(["A", "B", "C"])],
[0.1, MathbbrS],
[0.1, RnS]))
commaS = OneOfNamesF([","])
commaBaseS = OrF([0.9, OneOfNamesF(num_names+["x", "y"])], [0.1, SubS])
CommaExpS = CommaF(commaBaseS, commaS)
CommaTwoExpS = HoriF(CommaExpS, MoveLeftF(CommaExpS, 250))
OneCommaOneExpS = HoriF(CommaExpS, MoveLeftF(ScaleF(commaBaseS, 0.9), 250))
CommaLdotsCommaS = HoriAlignTopF(commaS, OneOfNamesF(["\\ldots"]), commaS)
LdotsCommaS = HoriAlignTopF(OneOfNamesF(["\\ldots"]), commaS)
lBraceS = OneOfNamesF(["\\{"])
LBraceOneS = HoriF(lBraceS, MoveLeftF(ScaleF(commaBaseS, 0.9), -600))
LBraceOneCommaExpS = HoriF(lBraceS, MoveLeftF(CommaExpS, -600))
CommaLDotsSetS = OrF(
[0.1, CommaExpS],
[0.1, OneCommaOneExpS],
[0.2, CommaTwoExpS],
[0.2, CommaLdotsCommaS],
[0.1, LdotsCommaS],
[0.1, LBraceOneS],
[0.2, LBraceOneCommaExpS]
)
Pattern3S = OrF(
[0.125, OneSymbolS],
[0.025, RnS],
[0.5, LinearProgramS],
[0.025, InExpS],
[0.025, SubseteqS],
[0.3, CommaLDotsSetS]
)
# train: generate_samples(Pattern3S, 500000)
# valid: generate_samples(Pattern3S, 50000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment