record fract(n,d) procedure main(A) fractran("17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1", 2) end procedure fractran(s, n, limit) execute(parse(s),n, limit) end procedure parse(s) f := [] s ? while not pos(0) do { tab(upto(' ')|0) ? put(f,fract(tab(upto('/')), (move(1),tab(0)))) move(1) } return f end procedure execute(f,d,limit) /limit := 15 every !limit do { if d := (d%f[i := !*f].d == 0, (writes(" ",d)/f[i].d)*f[i].n) then {} else break write() } write() end