|
3 / 3 / 2
Регистрация: 15.10.2013
Сообщений: 91
|
||||||
Сократить код30.04.2014, 14:08. Показов 3883. Ответов 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 | |
|
Сократить таймаут и количество посылаемых пакетов IdTCPClient Возможно ли сократить код
сократить Код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|