Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > go_brut_x


Автор: GrayCardinal 2.8.2023, 15:38
Что вы думаете о (моём) способе решать уравнения тупым перебором x-ов ?
На golang

сабж
https://sourceforge.net/projects/go-brut-x/

Олег.

Автор: LSD 2.8.2023, 23:43
Я думаю, как так получилось что SourceForge был топ сайтом для OSS проектов, но так просрал все полимеры. Я так и не понял куда мне тыкать, чтобы просмотреть код.

Автор: GrayCardinal 3.8.2023, 03:05
Элементарно
$ svn checkout svn://svn.code.sf.net/p/go-brut-x/svn/ go-brut-x-svn

прошу прощение у модераторов за сылку на другой форум.
https://www.cyberforum.ru/go/thread3123098.htm

А так.. Может это сюда замутить ?

Добавлено через 8 минут и 32 секунды
https://www.cyberforum.ru/go/thread3123098.html

Автор: Oldshelf 3.8.2023, 03:58
Цитата(LSD @  2.8.2023,  23:43 Найти цитируемый пост)
Я так и не понял куда мне тыкать, чтобы просмотреть код.

Тоже когда-то этого не понял. В итоге стал размещать там код в отдельном, а потом и основном, архиве. IMHO, самый доступный и удобный способ дать просто ознакомиться с кодом.

Цитата(GrayCardinal @  3.8.2023,  03:05 Найти цитируемый пост)
прошу прощение у модераторов за сылку на другой форум.

Сначала была 502 ошибка, сейчас 404.

Цитата(GrayCardinal @  2.8.2023,  15:38 Найти цитируемый пост)
Что вы думаете о (моём) способе решать уравнения тупым перебором x-ов ?

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

Автор: GrayCardinal 3.8.2023, 04:00
Oldshelf, 
Спасибо. Подсобите хоть чем-нибудь ? В одно рыло вкалывать несподручно.
Его доделать можно красиво :(

Добавлено @ 04:02
Я свинку обновил, если что...

Добавлено @ 04:04
Короче - на киберфоруме лежит в разделе Golang

Добавлено через 5 минут и 55 секунд
Блин - что такое -9 в Си ?

Заранее спасибо.
Олег.

Добавлено через 11 минут и 30 секунд
P.S
Код в архиве лежит тупо в файлосах.


Автор: GrayCardinal 3.8.2023, 07:48
А самое красивое то- что оно летает на 3.6Ghz

Автор: ТоляМБА 3.8.2023, 20:23
Зашёл во флейм,
А тут такое,
Что я немного прифигел.

Автор: GrayCardinal 4.8.2023, 03:05
ТоляМБА, 
Ща двоечка будет smile

Автор: Oldshelf 4.8.2023, 04:26
Цитата(GrayCardinal @  3.8.2023,  04:00 Найти цитируемый пост)
Подсобите хоть чем-нибудь ?

Разве что на этом форуме попробую что-то подсказать. Больше сейчас не потяну.

Автор: GrayCardinal 4.8.2023, 06:29
/usr/bin/ld: невозможно открыть выходной файл  /tmp/a.out: Нет такого файла или каталога

:(

Добавлено через 5 минут и 46 секунд
stage2
RootT4.000000
fl = 4.000000
error
done

Добавлено через 14 минут и 21 секунду
Ща форматну нах и opensuse поставлю (ща debian)
a.out второй раз  в tmp не пишет

Автор: GrayCardinal 4.8.2023, 11:06
А логарифмы считать вообще торчу smile

Автор: LSD 5.8.2023, 16:00
Цитата(GrayCardinal @  3.8.2023,  04:05 Найти цитируемый пост)
$ svn checkout svn://svn.code.sf.net/p/go-brut-x/svn/ go-brut-x-svn

Спасибо, вернул мой 2007. Чекаутить его я конечно же не буду.

В чем проблема вставить код непосредственно сюда?

Автор: GrayCardinal 5.8.2023, 16:03
"Спасибо, вернул мой 2007"
Не понял шутку.

Добавлено через 4 минуты и 49 секунд
Дошло. Счастливо мудохаться с GIT smile

Добавлено через 8 минут и 12 секунд
P.S
у меня 2006-ой.

Автор: GrayCardinal 6.8.2023, 06:27
НА.

Автор: LSD 10.8.2023, 23:15
Цитата(GrayCardinal @  5.8.2023,  17:03 Найти цитируемый пост)
Дошло. Счастливо мудохаться с GIT

Нет не дошло. 
Речь идет о том, что гитхаб позволяет посмотреть код, без регистрации и СМС. А еще у Go есть есть https://go.dev/play/ который позволяет выкладывать код с возможностью запустить его и посмотреть результат. А еще на форуме есть кнопка Код которая позволяет вставлять куски кода (да подсветки Go нет, но код вставить можно).
Код

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}


Но нет, ты предпочитаешь использовать технологии древних.
user posted image

Автор: GrayCardinal 11.8.2023, 17:33
LSD, 
Кошерные же, технологии smile
Вообще смотрел на ютубке про гит. Так там вообще - хоть архивчиками, как команда договорится. Архивчег одной командой делается, кстати. 

Автор: GrayCardinal 11.8.2023, 17:52
И вообще, если Вам впадлу код прогрузить мелкомягких - Ваши проблемы.

Автор: LSD 13.8.2023, 23:18
Цитата(GrayCardinal @  11.8.2023,  18:33 Найти цитируемый пост)
Вообще смотрел на ютубке про гит.

Цитата

- Вот все говорят: «Карузо! Карузо!» А я послушал – так ничего особенного» 
– «Вы слышали Карузо?!» 
– «Нет. Мне Рабинович напел



Цитата(GrayCardinal @  11.8.2023,  18:52 Найти цитируемый пост)
И вообще, если Вам впадлу код прогрузить мелкомягких - Ваши проблемы.

Ничего ты не понял.


P.S. Код ### только из-за брутфорса. За брутфорс в прод коде, надо быть ногами по перформанс ревью.

Автор: Oldshelf 14.8.2023, 02:02
Цитата(LSD @  13.8.2023,  23:18 Найти цитируемый пост)
P.S. Код ### только из-за брутфорса. За брутфорс в прод коде, надо быть ногами по перформанс ревью. 

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

Автор: GrayCardinal 14.8.2023, 06:49
LSD, 
Ха. Линейки и степенные у меня другой софт считает smile Это раз. А два - так вы сделайте без брутфорса...

Oldshelf, 
Спасибо smile

Автор: LSD 14.8.2023, 23:56
Цитата(Oldshelf @  14.8.2023,  03:02 Найти цитируемый пост)
Иногда брутфорс в коде способен давать неожиданные результаты, отличные от полученных в других подобных программах, создатели которых видимо опасаются пинков.

Это всего лишь означает, что реализация не брутфорс алгоритма неправильно его реализовал. (бывают исключения когда не буртфорс алгоритм дает субоптимальное или приблизительное решение, но это всегда оговаривается)


Цитата(Oldshelf @  14.8.2023,  03:02 Найти цитируемый пост)
К примеру в тех же шахматах полный перебор дерева может слегка разнообразить игру, позволив отыграть позиции, пропущенные более оптимизированными движками.

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

Автор: Oldshelf 15.8.2023, 03:35
Цитата(LSD @  14.8.2023,  23:56 Найти цитируемый пост)
Это всего лишь означает, что реализация не брутфорс алгоритма неправильно его реализовал. (бывают исключения когда не буртфорс алгоритм дает субоптимальное или приблизительное решение, но это всегда оговаривается)

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

Цитата(LSD @  14.8.2023,  23:56 Найти цитируемый пост)
1. В шахматах полный перебор разве что в эндшпиле можно использовать, а в дебюте никаких мощностей не хватит.

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

Цитата(LSD @  14.8.2023,  23:56 Найти цитируемый пост)
2. Если цель именно разнообразие, то можно просто в процесс принятия решений добавить немного рандома.

Именно так. Глупо было бы делать полный перебор с единственным лучшим результатом. Но выбирать из большего количества позиций, полученных в ходе такого перебора интереснее, чем из меньшего, ограниченного оптимизациями.

Автор: GrayCardinal 16.8.2023, 16:59
LSD, 
Там алгоритма то нема. Чтоб его "неправильно".

Автор: LSD 17.8.2023, 00:53
Цитата(Oldshelf @  15.8.2023,  04:35 Найти цитируемый пост)
Но до определённой области видимости, в зависимости от мощностей, можно считать все позиции. Иногда находятся неожиданные и оригинальные ходы.

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

Цитата(Oldshelf @  15.8.2023,  04:35 Найти цитируемый пост)
Но выбирать из большего количества позиций, полученных в ходе такого перебора интереснее, чем из меньшего, ограниченного оптимизациями.

Кому интереснее? Паре зануд на богом забытом форуме?
Заказчики хотят чёткий, детерминированный результат. Они не хотят выбирать из десятка предложенных решений. Курьерским компаниям нужен четкий маршрут для курьеров, а не квиз можно поехать так, а можно по другому - выбирай.



Цитата(GrayCardinal @  16.8.2023,  17:59 Найти цитируемый пост)
Там алгоритма то нема.

В этом то и проблема, ты от балды придумал задачу (перебрать все возможные решения уравнения от -X до +X с шагом Y), радостно решил и спрашиваешь мнение. Ну молодец, чо. Hello world на стероидах написал. Хочешь потренироваться в алгоритмах порешай литкод. Хочешь потренироваться в Го поработай с OSS проектами.

Автор: Oldshelf 17.8.2023, 03:40
Цитата(LSD @  17.8.2023,  00:53 Найти цитируемый пост)
1. Просмотреть все возможные текущие ходы.
2. Отбросить заведомо слабые.

Противоречивые пункты. Если отбрасывать заведомо слабые, то просмотреть все не получится. В этом и суть оптимизаций - сократить количество вычислений, для сокращения времени расчёта.

Цитата(LSD @  17.8.2023,  00:53 Найти цитируемый пост)
4. Оценить силу позиции.

При полном переборе без этого тоже никак.

Цитата(LSD @  17.8.2023,  00:53 Найти цитируемый пост)
5. Плюс кешировать результаты предыдущих подсчетов.

Здесь не понял. Для чего? Следующего расчёта при полном повторении просчитанной позиции? Тогда уж лучше использовать готовые дебютные или эндшпильные базы.

Цитата(LSD @  17.8.2023,  00:53 Найти цитируемый пост)

Кому интереснее? Паре зануд на богом забытом форуме?

Наверное, тому кто будет играть с данной программой. Чем выше вариативность, тем лучше реиграбельность, а значит и интерес к повторным партиям.

Цитата(LSD @  17.8.2023,  00:53 Найти цитируемый пост)
Заказчики хотят чёткий, детерминированный результат. Они не хотят выбирать из десятка предложенных решений. Курьерским компаниям нужен четкий маршрут для курьеров, а не квиз можно поехать так, а можно по другому - выбирай.

Этим и отличается работа от развлечения. В одном случае нужен максимально эффективный результат, в другом - необязательно настолько эффективный (а зачастую даже желательно), но зато более разнообразный. Программы нужны для той и другой сфер.

Автор: LSD 20.8.2023, 17:51
Цитата(Oldshelf @  17.8.2023,  04:40 Найти цитируемый пост)
Противоречивые пункты. Если отбрасывать заведомо слабые, то просмотреть все не получится. В этом и суть оптимизаций - сократить количество вычислений, для сокращения времени расчёта.

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


Цитата(Oldshelf @  17.8.2023,  04:40 Найти цитируемый пост)
При полном переборе без этого тоже никак.

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


Цитата(Oldshelf @  17.8.2023,  04:40 Найти цитируемый пост)
Здесь не понял. Для чего? Следующего расчёта при полном повторении просчитанной позиции? 

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

Автор: Oldshelf 21.8.2023, 04:23
Цитата(LSD @  20.8.2023,  17:51 Найти цитируемый пост)
Очевидно же, берется все возможные ходы их текущей позиции. Дальше смотрим какие из них слабые, какие сильные. Слабые исключаем из дальнейшего рассмотрения, а сильные ходы по этой же методике продолжаем оценивать дальнейшие варианты.

Понятно. Да, так получится так или иначе оценить все текущие ходы, но будут отброшены многие варианты ходов на следующих ветвлениях, что в итоге прогрессивно сократит общее число рассматриваемых позиций. В силу того, что абсолютно совершенного алгоритма оценки бесперспективных ходов, без их дальнейшего просчёта, не существуют (есть множество разных подходов, одни чем-то лучше, другие хуже), нельзя быть точно уверенным, что не окажется отброшен потенциально сильный ход, который просто не укладывается ни в одну известную стратегию.


Цитата(LSD @  20.8.2023,  17:51 Найти цитируемый пост)
Если это действительно полный перебор, то он заканчивается победой, поражением или ничьей. И оценивать там нечего.

Цитата(Oldshelf @  15.8.2023,  03:35 Найти цитируемый пост)
Понятно, что полный полный перебор невозможен в принципе. Даже в случае с любыми оптимизациями всё дерево целиком никогда не просчитать. Но до определённой области видимости, в зависимости от мощностей, можно считать все позиции. Иногда находятся неожиданные и оригинальные ходы.


Цитата(LSD @  20.8.2023,  17:51 Найти цитируемый пост)
Потому что мы уже смотрели эту ветку и если противник походит одним из способов, который мы просчитывали, то у нас уже есть рассчитанное дерево вариантов можно туда еще один уровень добавить и все. 

Так себе оптимизация. Добавление всего одного уровня создаст количество вычислений в разы превосходящее все просчитанные варианты. Таков принцип ветвления.

Автор: LSD 24.8.2023, 23:20
Цитата(Oldshelf @  21.8.2023,  05:23 Найти цитируемый пост)
Понятно. Да, так получится так или иначе оценить все текущие ходы, но будут отброшены многие варианты ходов на следующих ветвлениях, что в итоге прогрессивно сократит общее число рассматриваемых позиций. В силу того, что абсолютно совершенного алгоритма оценки бесперспективных ходов, без их дальнейшего просчёта, не существуют (есть множество разных подходов, одни чем-то лучше, другие хуже), нельзя быть точно уверенным, что не окажется отброшен потенциально сильный ход, который просто не укладывается ни в одну известную стратегию.

Есть компромисс: считать на N ходов вперед с перебором всех вариантов, или считать на 2N-5N ходов отбрасывая заведомо неудачные варианты. Можно взять одну и ту же программу, подкрутить там настройки и тупо сравнить кто сильнее играет. И вполне очевидно кто победил в итоге.
Плюс в любом случае, и после N ходов, и 5N ходов, все заканчивается оценкой силы позиции, где применяются те же критерии.


Цитата(Oldshelf @  21.8.2023,  05:23 Найти цитируемый пост)
онятно, что полный полный перебор невозможен в принципе. Даже в случае с любыми оптимизациями всё дерево целиком никогда не просчитать. Но до определённой области видимости, в зависимости от мощностей, можно считать все позиции. Иногда находятся неожиданные и оригинальные ходы.

На данные момент методы оценки силы хода достаточно совершенны. Может полный перебор раз в 100500 партий и сделает хороший и неожиданный хол, но в остальных случаях он будет делать более слабые ходы (чем оптимизированный вариант).


Цитата(Oldshelf @  21.8.2023,  05:23 Найти цитируемый пост)
Так себе оптимизация. Добавление всего одного уровня создаст количество вычислений в разы превосходящее все просчитанные варианты. Таков принцип ветвления.

Ты не понял про что я говорил.

Автор: Oldshelf 25.8.2023, 06:41
Цитата(LSD @  24.8.2023,  23:20 Найти цитируемый пост)
Ты не понял про что я говорил. 

Согласен. Если учесть, что компьютер рассчитывает свой ход, потом ответ и так далее, то сделав свой ход и получив на на него ответ человека, компьютер получит дерево на два уровня меньше. Так что просчитывать до нужного уровня придётся на два порядка больше. То есть количество незакэшированных расчётов возрастёт в x*x (где x может достигать, наверное, хоть 10, даже с оптимизацией и отбросом заведомо невыгодных ходов). На этом фоне добавление к этой сотни, заранее просчитанной единицы, выглядит не очень. Особенно с учётом того, что это потребует дополнительного кода для работы с кэшем, хранения и обработки, то есть лишних, хоть и крайне незначительных, но определённо совершенно бесполезных, вычислительных затрат и немного усложнит код, что иногда бывает намного хуже.

Цитата(LSD @  24.8.2023,  23:20 Найти цитируемый пост)
На данные момент методы оценки силы хода достаточно совершенны. Может полный перебор раз в 100500 партий и сделает хороший и неожиданный хол, но в остальных случаях он будет делать более слабые ходы (чем оптимизированный вариант).

Так и есть. Суть не в выигрыше компьютера у человека. С этой задачей он сегодня сегодня прекрасно справляется. Дело в нахождении неожиданных и потенциально интересных ветвлений. Чтобы у игрока был больше интереса к игре.


Цитата(LSD @  24.8.2023,  23:20 Найти цитируемый пост)
Есть компромисс: считать на N ходов вперед с перебором всех вариантов, или считать на 2N-5N ходов отбрасывая заведомо неудачные варианты. Можно взять одну и ту же программу, подкрутить там настройки и тупо сравнить кто сильнее играет. И вполне очевидно кто победил в итоге.
Плюс в любом случае, и после N ходов, и 5N ходов, все заканчивается оценкой силы позиции, где применяются те же критерии.

Это, да. Хотя, насчёт тупого сравнения не вполне соглашусь. Есть даже анекдот про непобедимую компьютерную программу, которая играет "от балды", но ей крайне везёт. В этом есть какая-то доля истины. Потому что оптимизированная программа будет иметь заведомо меньший набор, хотя и более сильных, ходов.  И не факт, что среди намного большего количества возможных ответов не найдётся достаточно эффективный. Дело в количестве итераций. Если же эта очень сильная программа будет очень сильно оптимизированной, вроде https://www.dreamchess.org (у неё, кстати отличный интерфейс и прямо - "мечта"), то тут будет уместно применить то самое кэширование и, повторив определённое разнообразное количество итераций, найти выигрышную стратегию. После чего, можно будет постоянно обыгрывать эту, довольно неплохо оптимизированную и сильную программу.

Автор: Bulat 11.10.2023, 10:02
Цитата(LSD @  14.8.2023,  23:56 Найти цитируемый пост)
1. В шахматах полный перебор разве что в эндшпиле можно использовать, а в дебюте никаких мощностей не хватит.

А вот и нифига!!!!!

Сколько шахматных партий заканчиваются позицией "белые сдались" или "черные сдались" даже не доходя до эндшпиля в миттельшпиле? Когда играешь с опытным и сильным соперником - достаточно получить хорошее преимущество на шахматных тонкостях - и опытный игрок сможет это преимущество довести до победы! Разве что совсем на гроссмейстерском уровне заранее лучше не загадывать... Поэтому и в дебюте можно использовать полный перебор!

Автор: LSD 11.10.2023, 22:10
Цитата(Bulat @  11.10.2023,  11:02 Найти цитируемый пост)
Сколько шахматных партий заканчиваются позицией "белые сдались" или "черные сдались" даже не доходя до эндшпиля в миттельшпиле?

user posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)