Показать сообщение отдельно
Старый 02.09.2009, 17:48   #12
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Простенькая задачка)

на скорую руку - ногами не бить
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
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dream (02.09.2009)