/* mollykez.tc - lrb - 11/24/08 psq int n [ /* if n is m*m for some m returns n else returns 0 int m,w;for (m=1;;++m) [ w=m*m;if (w>n) return 0 if (w==n) return w ] return 0 ] mollykez [ /* determine dance partners int cnt,k,m,d,o,dl,du int table(1100) char hi,lo,blue,white;hi='1';lo='0';blue='4';white='7' hilo hi;color blue;cls;posc(2,1) pl"mollykez.tc - lrb - 11/24/08";hilo lo pl"";pl"lower? ";dl=gn;ps"upper? ";du=gn;pl"" for (d=dl;d<=du;d=d+2) [ for (k=1;k<=d;++k) table(k)=0 cnt=0;for (k=(d/2+1);k<=d;++k) [ if (!table(k)) [ for (m=1;m<(d/2+1);++m) [ if (psq(k+m)*(!table(m))) [ table(k)=m;table(m)=k;++cnt;break ] /* if ] /* m loop ] /* if ] /* k loop if (cnt==d/2) [ pl"";pl"";pn d;ps" dancers";pl"";pl"" for (k=1;k<=d/2;++k) [ pn k;ps" -";pn table(k);ps" (" pn k+table(k);ps" )";pl"" ] /* k loop sak;pl"" ] /* if else pn d ] /* d loop pl"" ]