Здравствуйте, гость ( Вход | Регистрация )

52 страниц V « < 18 19 20 21 22 > »   
Ответить в эту темуОткрыть новую тему
> Упростить скрипт
Zeleax
сообщение 18.8.2013, 9:46
Сообщение #381


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Код
for #xField 1 6 1 // Я хз какого размера у тебя поле. Предположим 10 на 10.
    for #yField 1 6 1

я бы исправил на:
Код
for #xField 2 5 1 // Я хз какого размера у тебя поле. Предположим 6 на 6.
    for #yField 2 5 1


тогда можно часть if-ов внутри цикла удалить просто
смотрю дальше..

Сообщение отредактировал Zeleax - 18.8.2013, 9:47


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 9:51
Сообщение #382


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Кстати очень правильная мысль. И количество вычислений сильно уменьшится. Вместо обработки 6*6=36 клеток будет 4*4=16. Изначально предполагалось искать только вправо и вниз, однако потом были найдены варианты при которых были бы пропуски возможных линий.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 10:04
Сообщение #383


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Код
        for #x #xStart #xEnd 1
            for #y #yStart #yEnd 1
                if %field [ #x #y ] = %field [ #xField #yField ] and ( #x != #xField or #y != #yField )
                   ПОДСТАВИТЬ СЮДА
                end_if
            end_for
        end_for

этот кусок хорошо бы заменить на 2 отдельных цикла- проверкой по горизонтали и проверкой по вертикали.
Т.е. только проверить 1 столбец из 3-х ячеек, на совпадение всех цветов с цветом текущей ячейки.
И проверить только 1 строку из 3-х ячеек на совпадение всех цветов с цветом текущей ячейки.
Тогда сразу все станет ясно с направлением.

А если проверять нужно только соседние ячейки для текущей, то можно обойтись вообще без циклов одними if-ами. Будет ещё быстрее, имхо.

а, не учел еще диагональ..

Сообщение отредактировал Zeleax - 18.8.2013, 10:00


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 10:04
Сообщение #384


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Цитата
А если проверять нужно только соседние ячейки для текущей, то можно обойтись вообще без циклов одними if-ами. Будет ещё быстрее, имхо.

И для каждой ячейки просчитывать координаты? Фор конечно жрет ресурс, но боюсь если все это переписать set'ами, то получится знатный тормоз.
Цитата
этот кусок хорошо бы заменить на 2 отдельный цикла- проверка по горизонтали и проверка по верктикали.
Т.е. только проверить 1 столбец, на совпадение всех цветов с цветом текущей ячейки.
И проверить только 1 строку на совпадение всех цветов с цветом текущей ячейки.
Тогда сразу все станет ясно с направлением.

Пока не уловил. Тут ведь по сути и идет проверка только внутри одной строки, потом берется следующая строка.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 10:07
Сообщение #385


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



я так понимаю, что ты хочешь внутри текущего проверяемого квадрата 3*3 найти одноцветную полоску проходящую через центр этого квадрата. Правильно?
И точно полоска может быть диагональной?

Сообщение отредактировал Zeleax - 18.8.2013, 10:07


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 10:21
Сообщение #386


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Не полоску, а именно пару. Пара может быть диагональной.

Вообще цель собрать горизонтальную или вертикальную линию из 3 и более одинаковых элементов. При этом я руководствовался простым принципом:
Если нет одинаковых элементов в соседних ячейках, то ничего не соберешь.
При найденной паре дальнейшие варианты сильно сокращаются.

По поводу диагоналей.
0x0
x0x
Собирается на ура в линию.

кстати при
for #xField 2 5 1
мы пропустим пару, если она вдоль границы.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 10:23
Сообщение #387


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



так если ты ищещь пары, тогда внешний цикл можно делать:
Код
for #xField 1 5 1 // Я хз какого размера у тебя поле. Предположим 6 на 6.
    for #yField 1 5 1

стартовать всегда с текущей проверяемой ячейки и двигаться вправо-вниз, проверяя только ячейку справа и снизу. Количество вычислений уменьшится за счет удаления лишних if-ов внутри вложенных циклов

Сообщение отредактировал Zeleax - 18.8.2013, 10:24


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 10:28
Сообщение #388


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Цитата
Изначально предполагалось искать только вправо и вниз, однако потом были найдены варианты при которых были бы пропуски возможных линий.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 10:42
Сообщение #389


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



что за варианты? 1 пример


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 10:48
Сообщение #390


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



сижу вспоминаю, сразу с момента написания поста... начинаю подозревать, что поиск третьего изображения так же осуществлял только вправо и вниз...


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 11:03
Сообщение #391


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Ещё есть момент, что к текущей проверяемой ячейке подходит несколько вариантов: цвет может совпасть и снизу, и справа, и по диагонали...
Интересно, как ты это планируешь потом анализировать.


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 11:10
Сообщение #392


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Полный перебор. Break не делается, возможная линия записывается в массив итоговых значений. Тут интереснее, как дублей избежать.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 11:13
Сообщение #393


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



какие могут быть дубли если проверять только пары и только направо-вниз?


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 11:16
Сообщение #394


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



00x00
xx0xx


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 11:19
Сообщение #395


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



мысли на тему:
- предпочтения следует отдавать линиям которые расположены ниже

Цитата(DarkMaster @ 18.8.2013, 11:16) *

00x00
xx0xx

каждому цвету следует добавить приоритет. Он разный.
Вроде бы красный в приоритете, хуже желтый, еще хуже зеленый (кажется)
И чем ниже расположена линия на экране, тем круче - при одинаковом цвете

Сообщение отредактировал Zeleax - 18.8.2013, 11:20


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 12:03
Сообщение #396


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



в идеале бы проводить и анализ картинки, которая образуется уже после сбора от 3-х штук одного цвета, и каждый раз добавлять варианты в некое дерево вариантов.

По таймеру отслеживать "время на размышление". Как только время достигает предела - прерывать анализ и выдавать лучший вариант из найденных.

Т.е. сначала накопить все варианты линий для текущей картинки. А потом уже анализировать для каждой линии- "что будет дальше"


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 12:42
Сообщение #397


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 18.8.2013, 11:16) *

00x00
xx0xx

этот пример, кстати, хорошо показывает, почему нельзя проверять только направо-вниз )


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 13:13
Сообщение #398


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



если направо, низ и диагональ, то можно. Или нет?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.8.2013, 14:26
Сообщение #399


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 18.8.2013, 13:13) *

если направо, низ и диагональ, то можно. Или нет?

Цитата
.....
aaxbb
xx0xx


не найдет тоже.
Так что, действительно, нужно проверять и влево-назад и вправо-вперед.

И,думаю, что правильно у тебя была проверка сделана for #i 1 6 1
Т.к., если в первом или последнем столбце можно собрать вместе 3-5штук, то только так и можно проверить....

Так что неправильно я тебе советовал уменьшить область проверки.

Сообщение отредактировал Zeleax - 18.8.2013, 14:27


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 18.8.2013, 18:15
Сообщение #400


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29676
Пользователь №: 11.279



Цитата
не найдет тоже.

Разве? По идее когда дойдет до верхнего "x", то он увидит нижние пары.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

52 страниц V « < 18 19 20 21 22 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 18.7.2025, 5:51
Designed by Nickostyle