|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
||||||
Сократить код30.04.2014, 14:08. Показов 3700. Ответов 51
Метки нет (Все метки)
Помогите, пожалуйста, как-нибудь сократить код. Слишком он большой!
0
|
||||||
| 30.04.2014, 14:08 | |
|
Ответы с готовыми решениями:
51
Как сократить код? Как сократить код! Из dbedit в шаблон word. Сократить имеющийся код |
|
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
|
|
| 05.05.2014, 09:43 | |
|
tox14, Вообще возможно, но не желательно. Я тоже раньше не любил векторы... Грубо говоря вектор тот же массив, только лучше. Если реализовывать массивами, то нужно писать свою функцию sort и unique.
Sort - любая функция сортировки(например, пузырьком), а unique - берем первым элемент массива и сравниваем его с последующим, если повторяется, то удаляем, если нет, то берем уже этот элемент и так далее до n-1. Заполнение можно оставить тогда таким же рандомным, но уже с проверкой не повторяется ли элемент где-то...
1
|
|
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
|
| 05.05.2014, 10:31 [ТС] | |
|
Vergil, а что делать с компьютером? Как сделать его "сильнее" в установке чисел?
0
|
|
|
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
|
|
| 05.05.2014, 16:31 | |
|
tox14, Ну первое число ставим рандомно. Проходим по stringgrid'y и сравниваем со всеми элементами не равными "". Если равны, то запихиваем либо в туже строку, если не занята, либо в тот же столбец, если не занят. Если оба полностью заняты, то запихиваем в любое место. Только теперь придется проверять при установки числа по рандому, что бы она не попала в занятую клетку. Да и еще тогда нужно дописывать, что бы комп при выпадении числа не ставил в те строки, где уже есть.
ппппп пппп4 ппппп ппппп ппппп п - пустые. Что бы он любое число не равное 4 не ставил в 2 строку и 5 стобец, пока не кончатся 4ки. И т.д.
1
|
|
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
|
| 05.05.2014, 16:39 [ТС] | |
|
Vergil, а можно как-нибудь применить алгоритм "жадного выбора" для того, что бы узнать в какое место лучше ставить?
0
|
|
|
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
|
|
| 05.05.2014, 16:43 | |
|
tox14, Вполне возможно, но в алгоритмах, шифрованиях и прочем я не силен. Первый раз слышу о таком алгоритме.
1
|
|
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
|
| 05.05.2014, 16:55 [ТС] | |
|
Vergil, а как каким способом в твоём коде высчитывается, куда ставить число?
0
|
|
|
|
|
| 05.05.2014, 17:07 | |
|
В коде kzru_hunter и так уже реализован алгоритм принятия локальных оптимальных решений. В лоб пересчитываются все возможные результаты и отсеиваются от одного до нескольких наиболее выгодных. Среди них выбирается тот, при котором вокруг текущей ячейки останется больше всего свободных ячеек.
Просчет вероятности сюда не прикрутить, как мне это видится. Как посчитать вероятность выпадения числа, которое может вообще не выпасть за всю игру? Ключ к расширению возможностей алгоритма кроется в том, как вы его обыгрываете. Какие именно решения позволяют вам получить больший чем у компьютера счет?
1
|
|
|
43 / 37 / 17
Регистрация: 11.11.2009
Сообщений: 246
|
|
| 05.05.2014, 17:11 | |
|
tox14,
ищи вот это в коде for (int i = 0; i < 52; i++) {if (i<25) {comp[i]=i;}} тут заполнение вектора из 25 элементов числами от 0 до 24 выглядит вектор так 0 1 2 3 4 ... 24 std::random_shuffle (comp.begin(), comp.end() ); рандомно перемешивает числа в векторе стал выглядить например так 16 23 1 5 17 0 ... Form1->StringGrid2->Cells[comp[z]%5][comp[z]/5]=r; берется z элемент вектора. там есть счетчик по я на кнопке... Ты нажал кнопку закончить ход. z стало 0. comp[0]=16 16%5(остаток от деления)=1 16/5=3.2(но там идет int, потому округлится до 3) Вот и получается, что число будет записано в 4 строку и 2 столбец, потому что в c++ счет не с 1, а 0. BRcr, допустим у нас осталось 20 чисел. две 4 уже выпало. То вероятность выпадения 4 1/19, вроде.
1
|
|
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
|
| 05.05.2014, 17:13 [ТС] | |
|
В коде kzru_hunter применяется класс. Который я ещё не изучал, поэтому за основу я взял код Vergil.
Думаю достаточно было бы сделать, что бы он ставил одинаковые числа в одну строку или столбец. Ну ещё что бы числа 1,10,11,12,13 ставил на одну из диагоналей.
0
|
|
|
|
|
| 05.05.2014, 17:49 | |
|
Тогда просто прикрутить пересчет всех вариантов и выбор лучшего...
Vergil, я все равно не вижу, какую ценную информацию дает нам вычисление такой вероятности. У каждого из оставшихся неоткрытыми чисел есть определенная вероятность выпадения, но как это использовать? Во-первых, вероятность выпадения выгодных нам чисел чаще всего будет низка относительно других оставшихся, так как именно их выпавшие повторения сделали их выгодными. А во-вторых эффект от просчета вероятностей будет хорошо заметен только на больших числах, то есть компьютер более успешно проведет, скажем, 500 игр из тысячи вместо 400, а в каждой конкретной игре этого заметно не будет.
1
|
|
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
||||||
| 06.05.2014, 10:41 [ТС] | ||||||
|
Помогите реализовать в коде эту идею:Первое число ставится рандомно. Для того, что бы компьютер принял решение, куда ставить число, нужно сравнивать число, которое выпало с каждой ячейкой StringGrid2, и когда оно найдено, ставить его либо в такую же строку, или в такой же столбец на пустое место. Если и в столбце, и в строке нету места, то ставит в любое место. А числа 1,10,11,12,13 ставил на любую диагональ.
Код Vergil:
0
|
||||||
|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
|
| 07.05.2014, 17:47 [ТС] | |
|
Парни, помогите это реализовать. Я пока только начинающий.
0
|
|
| 07.05.2014, 17:47 | |
|
Помогаю со студенческими работами здесь
52
Сократить таймаут и количество посылаемых пакетов IdTCPClient Возможно ли сократить код
сократить Код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|