(Small Basic) nn =4 'center point 1 <= nn <= 9 pat=-1 'pat1=-1, pat2=1 c=1 c1=0 c2=0 sum=0 rc=1 s=math.Floor(math.Power(10,nn-1)*1.23456789) e=math.Power(10,nn-1)*(nn+1) for i=s to e nx=i 'select digit <= nn and > 0 For j = 1 To nn d1a=nx/10 nx=math.Floor(d1a) d[j]=(d1a-nx)*10 If d[j]>nn Or d[j]=0 Then Goto out EndIf EndFor 'selective non repeat DIGIT terms '======================= ny=i For jj = 1 To nn d1b=ny/10 ny=math.Floor(d1b) dd[jj]=(d1b-ny)*10 EndFor sl=1 For k=1 To nn For l=1 To nn If dd[k]=dd[l] And k<>l Then sl=0 EndIf EndFor EndFor If sl=1 Then a[c]=i c=c+1 EndIf '========================== out: EndFor For ii=1 To c-1 TextWindow.Write(a[ii]+"/ ") 'finding half circle radius********************* n=nn r[1]=1 nx=a[ii] For i1 = 1 To n d1c=nx/10 nx=math.Floor(d1c) d[i1]=(d1c-nx)*10 EndFor 'dxy = [d12, d23, d34, d41] For j1=1 To n For j2=1 To n If d[j1]=j2 Then dd[j2]=j1 endif EndFor EndFor For j3=1 To n If j3=n Then dxy[j3]=dd[j3]-dd[1] Else dxy[j3]=dd[j3]-dd[j3+1] EndIf EndFor For k1=1 To 100*n cc=Math.Floor((k1-1)/n) p[k1]=r[k1]+pat*dxy[k1-cc*n]*Math.Power(-1,Math.Remainder(k1,2)) r[k1+1]=p[k1] sum=sum+math.Abs(r[k1]) If math.Abs(r[k1])>0 Then rc=rc+1 EndIf If rc=3 Then rc=1 EndIf EndFor TextWindow.Write(sum+", ") sum=0 If math.Abs(r[k1])>10*n Then c1=c1+1 Else c2=c2+1 EndIf EndFor TextWindow.Write("spiral="+(c1)+" loop="+(c2)+" total="+(c-1))