Сообщение от Nex
А можно кодом? Выше я написал, что с массивами плохо дружу, а иначе сам бы уже догадался... 
|
Можно.
Посмотри примерчик ниже.
Обрати внимание на строчку
If(mas(x+dx*k, y+dy*k) = val)
Надеюсь, что приведённый пример поможет разобраться.

;делаем "одинаковые" случайные числа
SeedRnd (2010)
Global dimX = 10
Global dimY = 10
Global x, y
Dim mas(dimX, dimY)
Const dirX = 1
Const dirY = 2
Local txt$ = ""
;заполняем массив числами от 1 до 5, например
For y=0 To dimY-1
txt = ""
For x=0 To dimX-1
mas(x,y) = Rand (1, 5)
txt = txt + mas(x,y) + ", "
Next
Print(txt)
Next
Print ("")
;ищем 3 идущих подряд числа 5, с позиции (0,0) по "ширине" массива
Local pos$ = fnFindTheSame(5, 3, dirX)
Print ("posX = " + pos)
;ищем 2 идущих подряд числа 1, с позиции (1,0) по "высоте" массива
pos = fnFindTheSame(1, 2, dirY, 1, 0)
Print ("posY = " + pos)
WaitKey()
End
;функция поиска
;возвращает строчку, содержащую индексы позиции,
;начиная с которой выполняется условие
Function fnFindTheSame$(val=1, kolvo=3, dir=dirX, startX=0, startY=0)
Local cnt = 0
Local dx = 0
Local dy = 0
Local done = False
Local retVal$ = ""
Local k = 0
For y = startY To dimY-1
For x = startX To dimX-1
;если нашли нужную нам цифру
If(mas(x,y) = val)
;в зависимости от направления поиска устанавливаем приращения
If(dir = dirX)
dx = 1
dy = 0
EndIf
If(dir = dirY)
dx = 0
dy = 1
EndIf
;запоминаем позицию
retVal = retVal + x+","+y
cnt = cnt + 1
;пробегаем по "высоте" или "ширине" массива и ищем повторы нужного числа
For k = 1 To kolvo-1
If(mas(x+dx*k, y+dy*k) = val)
cnt = cnt + 1
;если нашли нужное количество идущих подряд повторов - выходим
If(cnt = kolvo)
done = True
Exit
EndIf
Else
cnt = 0
retVal = ""
Exit
EndIf
Next
If(done = True) Exit ;выход из цикла по Х
Else
cnt = 0
retVal = ""
EndIf
Next
If(done = True) Exit ;выход из цикла по У
Next
;если не нашли нужное количество, то отражаем это в результате
If(cnt < kolvo) retVal = "none"
Return retVal
End Function