link strings procedure main() local expr, result, term, i, var, letters, sequence, k expr := "" # Read Mathematica expression. while expr ||:= read() # Delete extraneous characters. expr := deletec(expr, '()\\! ') # Analyze polynomial sequence := "" # Parse expression. expr ? { while term := tab(upto('+- ') | 0) do # get term term ? { result := "" i := (tab(many(&digits)) | 1) # multiplier while var := move(1) do { # variable if ="^" then k := tab(many(&digits)) else k := 1 result ||:= repl(var, k) } sequence ||:= repl(result, i) } move(1) | break } } letters := &lcase ** sequence #variables # Map variables into digits (assumes at most # nine variables). write(map(sequence, letters, "123456789"[1 +: *letters])) end