45 lines
1.0 KiB
Plaintext
45 lines
1.0 KiB
Plaintext
' Recaman's sequence - smallbasic - 05/08/2015
|
|
nn=15
|
|
TextWindow.WriteLine("Recaman's sequence for the first " + nn + " numbers:")
|
|
recaman()
|
|
TextWindow.WriteLine(Text.GetSubTextToEnd(recaman,2))
|
|
nn="firstdup"
|
|
recaman()
|
|
TextWindow.WriteLine("The first duplicated term is a["+n+"]="+a[n])
|
|
|
|
Sub recaman
|
|
a=""
|
|
b=""
|
|
dup=""
|
|
recaman=""
|
|
firstdup=""
|
|
If nn="firstdup" Then
|
|
nn=1000
|
|
firstdup="True"
|
|
EndIf
|
|
For n=0 To nn-1
|
|
ap=a[n-1]+n
|
|
If a[n-1]<=n Then
|
|
a[n]=ap 'a[n]=a[n-1]+n
|
|
b[ap]=1
|
|
Else
|
|
am=a[n-1]-n
|
|
If b[am]=1 Then
|
|
a[n]=ap 'a[n]=a[n-1]+n
|
|
b[ap]=1
|
|
Else
|
|
a[n]=am 'a[n]=a[n-1]-n
|
|
b[am]=1
|
|
EndIf
|
|
EndIf
|
|
If firstdup Then
|
|
If dup[a[n]]=1 Then
|
|
Goto exitsub
|
|
EndIf
|
|
dup[a[n]]=1
|
|
EndIf
|
|
recaman=recaman+","+a[n]
|
|
EndFor
|
|
exitsub:
|
|
EndSub
|