на скорую руку - ногами не бить
SeedRnd MilliSecs()
Local SZ%=1000
Dim p(SZ)
Local secret=Rand(0,SZ)
Local J=0
For I=0 To SZ
p(I)=J
If I=secret
J=J+2
Else
J=J+1
EndIf
Next
;===================
Local K#=SZ/4
Local CHK%=SZ/2
Local d%=0
Local f=False
While True
If p(CHK)>CHK
If d=1
f=True
EndIf
d=-1
Else
If d=-1
f=True
EndIf
d=1
EndIf
If f
Exit
EndIf
CHK=CHK+d*K
K=K/2
Wend
If d=1
For I=CHK To SZ
If p(I)<>I
I=I-1
Exit
EndIf
Next
Else
For I=CHK To 0 Step -1
If p(I)=I
Exit
EndIf
Next
EndIf
DebugLog "secret="+I
DebugLog "check - "+secret