Добрый день, уважаемые! Готовлю очередной турнир по прогнозированию спорта. Несколько тем уже были ранее созданы и задумки успешно реализованы. Спасибо всем откликнувшимся и не безразличным. В данной теме прошу помощи в реализации (я бы даже сказал "по полной программе") задуманного мною нового турнира, который надеюсь вызовет большой интерес среди моих единомышленников.
Итак, это было отступление. Суть турнира: определять победителей (хороших прогнозистов) не только по угаданным исходам, счете, но и внести некую новинку - покер-комбинации. В программке матчей я выставляю 10 матчей, результаты которых игроки должны угадать. Прогнозы на счет. Расчетная система уже готова, благодаря уважаемому Gustav-у. Здесь можно посмотреть результаты работы http://www.excelworld.ru/forum/2-23317-1 Кроме этого к полученным очкам нужно приплюсовать очки за угаданные исходы и теперь самое интересное - очки за набранные покер-комбинации. Покер-комбинация - это набор угаданных событий на ИСХОДЫ (1Х2) которые выстроены подряд. Пример: Прогноз игрока 11122ХХ221 - пусть результат будет 111Х2Х1111. Из примера видно, что игрок угадал 3 победы первой команды, да еще и подряд. Это уже считает сет (или тройка) за нее он получает в свой актив 3 очка. Больше комбинаций он не собрал. Значения и варианты покер-комбо пока еще в разработке, но сейчас это не столь важно. Таким образом в турнире будут открыт некий квест в котором нужно набрать определенный набор комбинаций чтобы пройти дальше и победить. К примеру за 10 туров нужно собрать фулл-хаус, стрит, каре и т.д. Теперь ближе к делу.
Что нужно сделать?
В прикрепленном файле в столбце D вручную вводятся результаты матчей в виде исходов 1Х2, нужно чтобы в столбцах Е и F, куда вводятся прогнозы игроков, угаданные исходы (не счет) окрашивались зеленым, а также чтобы в ячейке Е15-Е16 и соответственно F15-F16 выводились набранные очки за комбинацию и название самой комбинации. Конечно комбо может быть несколько, нужно чтобы выводилось название самой старшей комбинации, а в ячейке выше сумма всех комбинаций. Комбинация это минимум 2 подряд угаданных исхода и длится она может до 5. Начиная с первого угаданного исхода считаем последующие и если эта комбинация известна нам. то начисляем очки. Если угаданная серия длится больше чем 5, то начинаем отсчет с 6-го исхода. За каждый угаданный исход сверх 5 начисляется бонус. Но это уже тонкости, которые можно обсудить по ходу дела. Вот как-то так. Надеюсь на вашу помощь.
Добрый день, уважаемые! Готовлю очередной турнир по прогнозированию спорта. Несколько тем уже были ранее созданы и задумки успешно реализованы. Спасибо всем откликнувшимся и не безразличным. В данной теме прошу помощи в реализации (я бы даже сказал "по полной программе") задуманного мною нового турнира, который надеюсь вызовет большой интерес среди моих единомышленников.
Итак, это было отступление. Суть турнира: определять победителей (хороших прогнозистов) не только по угаданным исходам, счете, но и внести некую новинку - покер-комбинации. В программке матчей я выставляю 10 матчей, результаты которых игроки должны угадать. Прогнозы на счет. Расчетная система уже готова, благодаря уважаемому Gustav-у. Здесь можно посмотреть результаты работы http://www.excelworld.ru/forum/2-23317-1 Кроме этого к полученным очкам нужно приплюсовать очки за угаданные исходы и теперь самое интересное - очки за набранные покер-комбинации. Покер-комбинация - это набор угаданных событий на ИСХОДЫ (1Х2) которые выстроены подряд. Пример: Прогноз игрока 11122ХХ221 - пусть результат будет 111Х2Х1111. Из примера видно, что игрок угадал 3 победы первой команды, да еще и подряд. Это уже считает сет (или тройка) за нее он получает в свой актив 3 очка. Больше комбинаций он не собрал. Значения и варианты покер-комбо пока еще в разработке, но сейчас это не столь важно. Таким образом в турнире будут открыт некий квест в котором нужно набрать определенный набор комбинаций чтобы пройти дальше и победить. К примеру за 10 туров нужно собрать фулл-хаус, стрит, каре и т.д. Теперь ближе к делу.
Что нужно сделать?
В прикрепленном файле в столбце D вручную вводятся результаты матчей в виде исходов 1Х2, нужно чтобы в столбцах Е и F, куда вводятся прогнозы игроков, угаданные исходы (не счет) окрашивались зеленым, а также чтобы в ячейке Е15-Е16 и соответственно F15-F16 выводились набранные очки за комбинацию и название самой комбинации. Конечно комбо может быть несколько, нужно чтобы выводилось название самой старшей комбинации, а в ячейке выше сумма всех комбинаций. Комбинация это минимум 2 подряд угаданных исхода и длится она может до 5. Начиная с первого угаданного исхода считаем последующие и если эта комбинация известна нам. то начисляем очки. Если угаданная серия длится больше чем 5, то начинаем отсчет с 6-го исхода. За каждый угаданный исход сверх 5 начисляется бонус. Но это уже тонкости, которые можно обсудить по ходу дела. Вот как-то так. Надеюсь на вашу помощь.foliant
ВОПРОСЫ: 1. Что означают конкретные исходы "1", "X" и "2"? 2. Комбинации подряд искать из всех или только из "1"? 3. Если минимальная комбинация это 2, а максимальная - 5, то 7 = 5+2, 8 = 5+3 и т.д.? так? 4. А тогда что дают за 6? Это же 5 + 1, а за 1 вроде ничего не полагается?
ВОПРОСЫ: 1. Что означают конкретные исходы "1", "X" и "2"? 2. Комбинации подряд искать из всех или только из "1"? 3. Если минимальная комбинация это 2, а максимальная - 5, то 7 = 5+2, 8 = 5+3 и т.д.? так? 4. А тогда что дают за 6? Это же 5 + 1, а за 1 вроде ничего не полагается?Gustav
1. 1 - победа домашней команды Х - ничья 2 - победа гостей 2. комбинация начинается с первого угаданного исхода и до 5. Комбинации разные могут быть не только из "1". Примеры: 2ХХХ2 - фулл-хаус (3 ничьи и 2 победы гостей), 1х21х или х21х2 - роял-стрит (здесь главное чтобы последовательность соблюдалась) - 2211_Х - здесь 2 пары (последний исход ничья не угадана). В общем последовательность важно только для самого сложных - роял-стрит и то даже она может начинатся с любого исхода. 3. Не совсем понял вопрос. Повторюсь: комбинацию нужно считать в пределах 5 угаданных подряд исходов, а если серия продолжилась к примеру до 9 подряд, то начинаем считать новую серию с 6 угаданного исхода. Если конечно с 6 по 9 будет необходимая комбинация. Можно конечно не ограничиваться 5 (в случаи когда больше угадано) а отталкиваться от максимальной серии и в ней уже чтобы срабатывала самая сильная комбинация. Но я пока не уверен как правильно расставить приоритеты. 4. Да, за 1 ничего не полагается, за 6, 7, 8, 9 и 10 полагается бонус - за так сказать достижение - назовем его рекордная серия - 1 очко за каждый исход. Но если их 7 и больше, то может подфортить и сложится еще и пару, сет или даже каре.
1. 1 - победа домашней команды Х - ничья 2 - победа гостей 2. комбинация начинается с первого угаданного исхода и до 5. Комбинации разные могут быть не только из "1". Примеры: 2ХХХ2 - фулл-хаус (3 ничьи и 2 победы гостей), 1х21х или х21х2 - роял-стрит (здесь главное чтобы последовательность соблюдалась) - 2211_Х - здесь 2 пары (последний исход ничья не угадана). В общем последовательность важно только для самого сложных - роял-стрит и то даже она может начинатся с любого исхода. 3. Не совсем понял вопрос. Повторюсь: комбинацию нужно считать в пределах 5 угаданных подряд исходов, а если серия продолжилась к примеру до 9 подряд, то начинаем считать новую серию с 6 угаданного исхода. Если конечно с 6 по 9 будет необходимая комбинация. Можно конечно не ограничиваться 5 (в случаи когда больше угадано) а отталкиваться от максимальной серии и в ней уже чтобы срабатывала самая сильная комбинация. Но я пока не уверен как правильно расставить приоритеты. 4. Да, за 1 ничего не полагается, за 6, 7, 8, 9 и 10 полагается бонус - за так сказать достижение - назовем его рекордная серия - 1 очко за каждый исход. Но если их 7 и больше, то может подфортить и сложится еще и пару, сет или даже каре.foliant
ЕЩЕ ВОПРОСЫ: 1. "2ХХХ2 - фулл-хаус ", а "1XXX1" тоже? а "X222X" тоже? Или только именно в такой конфигурации - "2ХХХ2"? 2. При анализе комбинации берутся только "зеленые" (угаданные) клетки, не взирая на "белые" (НЕугаданные) ? Или должны идти подряд несколько "зелёных" и только тогда это является комбинацией? 3. "GAS-Ural" и "ГОЛ" - это просто примеры некоторых участников прогноза? А где их получившиеся коды? Я так понимаю, что колонка с "1X2" относится к жёлтой колонке? какой символ будет у прогнозистов на позиции неугаданного исхода: "0" или "_" или что ?
ЕЩЕ ВОПРОСЫ: 1. "2ХХХ2 - фулл-хаус ", а "1XXX1" тоже? а "X222X" тоже? Или только именно в такой конфигурации - "2ХХХ2"? 2. При анализе комбинации берутся только "зеленые" (угаданные) клетки, не взирая на "белые" (НЕугаданные) ? Или должны идти подряд несколько "зелёных" и только тогда это является комбинацией? 3. "GAS-Ural" и "ГОЛ" - это просто примеры некоторых участников прогноза? А где их получившиеся коды? Я так понимаю, что колонка с "1X2" относится к жёлтой колонке? какой символ будет у прогнозистов на позиции неугаданного исхода: "0" или "_" или что ?Gustav
1. Тоже, в разных конфигах, главное наличие заданных параметров. 2. Только зеленые и только подряд. 3. Да, к желтой, прогнозы игроков только на счет, а колонка 1х2 для покер-комбинаций. То есть нужно, чтобы формула определяла по счету 2:1 победу хозяев. Символов не предусмотрено, не угаданые остаются тем де цветом, а угаданные зеленым
1. Тоже, в разных конфигах, главное наличие заданных параметров. 2. Только зеленые и только подряд. 3. Да, к желтой, прогнозы игроков только на счет, а колонка 1х2 для покер-комбинаций. То есть нужно, чтобы формула определяла по счету 2:1 победу хозяев. Символов не предусмотрено, не угаданые остаются тем де цветом, а угаданные зеленымfoliant
Работа с турниром обирает много времени. Все не так просто как может показаться на первый взгляд. Я же пытаюсь настроить полу-автоматический режим, но ручной работы остается много. Поэтому хочу внести еще больше ясности. Расскажу из чего все состоит.
Начинается все из того, что я захожу на страницу сайта. который принимает прогнозы пользователей. К сожалению сейчас нет такой возможности, чтобы можно было играть турнир по расчетной системе описанной выше. У программиста на это нет времени. Поэтому я решил взять все в свои руки и делать ими же. Значит захожу я на страницу где игроки оставляют прогнозы вот к примеру эту Далее открываю все мини-матчи (противостояния двух игроков) выделяю всё-копирую-вставлаю-форматирую. На последнем хочу остановится. Вот это самое форматирование очень достало уже. При вставке естественно счет 2:1 вставляется в 1 ячейку. Я понимаю, что удобнее было бы если бы в каждой отдельной ячейке были голы 2 и 1 (как в расчетной системе, которую Gustav сделал ранее). Знаю, что можно через Данные-текст по столбцам решить этот вопрос, но опять таки, это забирает время. Такие действия нужно производить каждую неделю (возможно даже дважды). Так что просьба: если реально показать системе (формула или макрос) чтобы она понимал счет в одной ячейке, то это было бы замечательно. Если нет, то пусть уже будет. если не куда деваться. Повторю главную цель: нужно построить систему так. чтобы она сама сравнивала показатели в столбце D (исходы 1Х2 - результаты завершившихся матчей) со столбцами Е и F (там прогнозы в виде счета, но система должна понимать счет 2:1 как "1" счет 2:2 как "Х" и т.д) и находила совпадения по покер-комбо, суммировал их, выводила в итоговую ячейку, а также прописывала название самой старшей комбинации. Я сейчас для удобства тех, кто может помочь, постараюсь выписать все возможные комбинации, чтобы проще было понять.
Еще немного уточнений:
Работа с турниром обирает много времени. Все не так просто как может показаться на первый взгляд. Я же пытаюсь настроить полу-автоматический режим, но ручной работы остается много. Поэтому хочу внести еще больше ясности. Расскажу из чего все состоит.
Начинается все из того, что я захожу на страницу сайта. который принимает прогнозы пользователей. К сожалению сейчас нет такой возможности, чтобы можно было играть турнир по расчетной системе описанной выше. У программиста на это нет времени. Поэтому я решил взять все в свои руки и делать ими же. Значит захожу я на страницу где игроки оставляют прогнозы вот к примеру эту Далее открываю все мини-матчи (противостояния двух игроков) выделяю всё-копирую-вставлаю-форматирую. На последнем хочу остановится. Вот это самое форматирование очень достало уже. При вставке естественно счет 2:1 вставляется в 1 ячейку. Я понимаю, что удобнее было бы если бы в каждой отдельной ячейке были голы 2 и 1 (как в расчетной системе, которую Gustav сделал ранее). Знаю, что можно через Данные-текст по столбцам решить этот вопрос, но опять таки, это забирает время. Такие действия нужно производить каждую неделю (возможно даже дважды). Так что просьба: если реально показать системе (формула или макрос) чтобы она понимал счет в одной ячейке, то это было бы замечательно. Если нет, то пусть уже будет. если не куда деваться. Повторю главную цель: нужно построить систему так. чтобы она сама сравнивала показатели в столбце D (исходы 1Х2 - результаты завершившихся матчей) со столбцами Е и F (там прогнозы в виде счета, но система должна понимать счет 2:1 как "1" счет 2:2 как "Х" и т.д) и находила совпадения по покер-комбо, суммировал их, выводила в итоговую ячейку, а также прописывала название самой старшей комбинации. Я сейчас для удобства тех, кто может помочь, постараюсь выписать все возможные комбинации, чтобы проще было понять.foliant
Набросал 2 варианта шаблонов. Хотя можно было и больше . Но пожалуй пока на этом остановлюсь, так как могу слишком далеко зайти со своей фантазией. Если вдруг кому-то покажется слишком сложным для понимания - пишите, буду объяснять. А если это не посильная задача для программы excel, то предложите свой вариант, хотя бы примерно, чтобы знать, что excel потянет.
Набросал 2 варианта шаблонов. Хотя можно было и больше . Но пожалуй пока на этом остановлюсь, так как могу слишком далеко зайти со своей фантазией. Если вдруг кому-то покажется слишком сложным для понимания - пишите, буду объяснять. А если это не посильная задача для программы excel, то предложите свой вариант, хотя бы примерно, чтобы знать, что excel потянет.foliant
Символов не предусмотрено, не угаданые остаются тем де цветом, а угаданные зеленым
Надо предусмотреть. Так или иначе такое представление надо будет получить.
Допустим, есть такая картина: 111Х2Х1111 - фактический результат 11122ХХ221 - прогноз игрока
Тогда должно быть такое преобразование (формула, макрос), которое создает строку угаданных позиций игрока: 111_2Х___1
И далее надо работать с этой строкой: 1. Разбить при помощи Split на части: "111","2Х", "1". 2. Игнорировать строки длиной менее 2-х символов, т.е. остаются "111" и "2Х". 3. "Продавить" оставшиеся в работе строки через "сито" заготовленных регулярных выражений. 4. И т.д. в том же духе
Нужно подготовить справочник шаблонов регулярных выражений, используя, например, буквы A, B, C. Эти буквы ничего не означают, кроме "1-й символ", "2-й символ", "3-й символ". Вместо букв можно было бы использовать 1, 2, 3, но, как видим, 1 и 2 уже заняты для других целей.
С помощью таких шаблонов можно записать фул-хаус как "ABBBA" (где A и B - это два любые разные символы из набора 1X2 ), а две пары как "AABB", а какую-нибудь, скажем, "пирамидку" как "ABCBA".
Короче говоря, нужно садиться и сочинять довольно объёмную процедуру на VBA. Формулами тут вряд ли эффективно что-то разрулится...
И надо разбить задачу на понятные шаги, реализуемые за обозримое конечное время. Начать предлагаю как раз с получения "строки угаданных позиций".
P.S. Да! И чтобы не быть понятым неправильно, типа "я уже берусь за реализацию" - я это не для себя куски тех.задания набрасываю, а для Вас И для тех формулистов и макрописцев, которые далее, возможно, захотят поучаствовать в теме.
Символов не предусмотрено, не угаданые остаются тем де цветом, а угаданные зеленым
Надо предусмотреть. Так или иначе такое представление надо будет получить.
Допустим, есть такая картина: 111Х2Х1111 - фактический результат 11122ХХ221 - прогноз игрока
Тогда должно быть такое преобразование (формула, макрос), которое создает строку угаданных позиций игрока: 111_2Х___1
И далее надо работать с этой строкой: 1. Разбить при помощи Split на части: "111","2Х", "1". 2. Игнорировать строки длиной менее 2-х символов, т.е. остаются "111" и "2Х". 3. "Продавить" оставшиеся в работе строки через "сито" заготовленных регулярных выражений. 4. И т.д. в том же духе
Нужно подготовить справочник шаблонов регулярных выражений, используя, например, буквы A, B, C. Эти буквы ничего не означают, кроме "1-й символ", "2-й символ", "3-й символ". Вместо букв можно было бы использовать 1, 2, 3, но, как видим, 1 и 2 уже заняты для других целей.
С помощью таких шаблонов можно записать фул-хаус как "ABBBA" (где A и B - это два любые разные символы из набора 1X2 ), а две пары как "AABB", а какую-нибудь, скажем, "пирамидку" как "ABCBA".
Короче говоря, нужно садиться и сочинять довольно объёмную процедуру на VBA. Формулами тут вряд ли эффективно что-то разрулится...
И надо разбить задачу на понятные шаги, реализуемые за обозримое конечное время. Начать предлагаю как раз с получения "строки угаданных позиций".
P.S. Да! И чтобы не быть понятым неправильно, типа "я уже берусь за реализацию" - я это не для себя куски тех.задания набрасываю, а для Вас И для тех формулистов и макрописцев, которые далее, возможно, захотят поучаствовать в теме.Gustav
я это не для себя куски тех.задания набрасываю, а для Вас И для тех формулистов и макрописцев, которые далее, возможно, захотят поучаствовать в теме.
спасибо за помощь. Я что-то понял, а что-то не очень, но все же в какую сторону копать понял. Вот бы еще только "руками умелыми" обзавестись. Я понимаю. что это долгая и кропотливая работа (может стоило частично задавать вопросы? ) Быть может кто-то изъявит желание сделать хотя-бы какую то часть этого тех. задания?
я это не для себя куски тех.задания набрасываю, а для Вас И для тех формулистов и макрописцев, которые далее, возможно, захотят поучаствовать в теме.
спасибо за помощь. Я что-то понял, а что-то не очень, но все же в какую сторону копать понял. Вот бы еще только "руками умелыми" обзавестись. Я понимаю. что это долгая и кропотливая работа (может стоило частично задавать вопросы? ) Быть может кто-то изъявит желание сделать хотя-бы какую то часть этого тех. задания?foliant
[offtop] Если честно, не очень понимаю смысл этой "покеризации" набора результатов матчей. Пытаться угадать исход конкретного матча - да, это интересно, в этом есть определенные логика, основания и обоснования: предыдущая статистика встреч этих команд, текущая сила (турнирное положение), недавняя смена главного тренера, уход крутейшего игрока в другую команду и т.п. факторы, безусловно влияющие на ближайший матч между этими командами.
В чём, скажите, заслуга прогнозиста, угадавшего исход четырех СОСЕДНИХ матчей в расписании чемпионата, составленного не им и совершенно случайным образом? Выйти на улицу и раздавать конфетки всем зеленоглазым девушкам - по-моему, примерно аналогичное занятие, ведь девушки никак не "виноваты", что они родились с зелеными глазами
[offtop] Если честно, не очень понимаю смысл этой "покеризации" набора результатов матчей. Пытаться угадать исход конкретного матча - да, это интересно, в этом есть определенные логика, основания и обоснования: предыдущая статистика встреч этих команд, текущая сила (турнирное положение), недавняя смена главного тренера, уход крутейшего игрока в другую команду и т.п. факторы, безусловно влияющие на ближайший матч между этими командами.
В чём, скажите, заслуга прогнозиста, угадавшего исход четырех СОСЕДНИХ матчей в расписании чемпионата, составленного не им и совершенно случайным образом? Выйти на улицу и раздавать конфетки всем зеленоглазым девушкам - по-моему, примерно аналогичное занятие, ведь девушки никак не "виноваты", что они родились с зелеными глазами Gustav
Если честно, не очень понимаю смысл этой "покеризации"
Смысл в том, чтобы разбавить привычные прогнозы, какой-то новинкой. Я это говорю как человек, который участвует во многих соревнованиях, и все они между собой очень схожи. Хочется чего-то новенького. Тем более, что я не пытаюсь выявить ЛУЧШЕГО прогнозиста, который хорошо разбирается в спорте. Комбо-покер - это как дополнение, которое показывает еще одну сторону прогнозиста. Сказать, что тот кто угадывает чаще других результаты и при этом ему попадаются хорошие покер-комбо - лучший прогнозист будет не правильно. Изначально задумывалось вести параллельно очки "на счет", "на исход", "на комбо-покер". Турнирная таблица рассчитана на вывод подробной статистики по всем "потокам" (системам начисления). Есть еще одна, не озвученная графа - серии. Это когда считается самая длинная серия удачных прогнозов игрока. Это уже относится к опыту. Все таки согласитесь если человек регулярно может угадывать подряд результаты сложных матчей, то это что-то да значит. Сложные например, когда играют два равных соперника, или любители поиграть в ничью и т.д. А сам покер как забава. Вообще в планах было дать возможность игроку выбирать из своих же угаданных исходов, которые состаляют комбинацию (или просто выбирать угаданные исходы) и зачеркивать где-то перед следующим туром. Задача такова, чтобы за кратчайший срок собрать определенные комбинации. Вот к примеру как в игре Yatzy, которая схожа с покером: там есть 3 броска (попытки) за которые игрок должен набрать одну из перечисленных заранее комбинаций. Перед каждым броском, он может сбрасывать ненужные карты, оставляя более выгодные на его взгляд. Там нужно собрать 1-6, стрит, фулл-хаус, каре и т.д. И потом сравнивается сумма набранных. Вот так я хочу растянуть одну игру Yatzy на весь турнир. Но технически сайты не имеют такой возможности, чтобы игрок мог выкинуть не нужные угаданные исходы, ну или как то это означить. Разве что только в комментариях на форуме можно собирать. Но это трудоемкий процесс. Поэтому я решил ограничится "элементом случайности" - когда что выпало, то выпало и выбирать самую сильную комбинацию. С другой стороны, если навести пример с ничьими - у меня есть правило 2 ничьи в серии, то можно предположить, что угадавший серию где было 2 ничьи, явно хороший прогнозист. Еще пример: играя по таким правилам игроку приходится рисковать, где-то ставить не так как обычно, надеясь "собрать" не достающую для комбинации победу гостей. Но все же скорее склоняюсь, что покер-комбо - забава, и к умению хорошо прогнозировать не относится.
Если честно, не очень понимаю смысл этой "покеризации"
Смысл в том, чтобы разбавить привычные прогнозы, какой-то новинкой. Я это говорю как человек, который участвует во многих соревнованиях, и все они между собой очень схожи. Хочется чего-то новенького. Тем более, что я не пытаюсь выявить ЛУЧШЕГО прогнозиста, который хорошо разбирается в спорте. Комбо-покер - это как дополнение, которое показывает еще одну сторону прогнозиста. Сказать, что тот кто угадывает чаще других результаты и при этом ему попадаются хорошие покер-комбо - лучший прогнозист будет не правильно. Изначально задумывалось вести параллельно очки "на счет", "на исход", "на комбо-покер". Турнирная таблица рассчитана на вывод подробной статистики по всем "потокам" (системам начисления). Есть еще одна, не озвученная графа - серии. Это когда считается самая длинная серия удачных прогнозов игрока. Это уже относится к опыту. Все таки согласитесь если человек регулярно может угадывать подряд результаты сложных матчей, то это что-то да значит. Сложные например, когда играют два равных соперника, или любители поиграть в ничью и т.д. А сам покер как забава. Вообще в планах было дать возможность игроку выбирать из своих же угаданных исходов, которые состаляют комбинацию (или просто выбирать угаданные исходы) и зачеркивать где-то перед следующим туром. Задача такова, чтобы за кратчайший срок собрать определенные комбинации. Вот к примеру как в игре Yatzy, которая схожа с покером: там есть 3 броска (попытки) за которые игрок должен набрать одну из перечисленных заранее комбинаций. Перед каждым броском, он может сбрасывать ненужные карты, оставляя более выгодные на его взгляд. Там нужно собрать 1-6, стрит, фулл-хаус, каре и т.д. И потом сравнивается сумма набранных. Вот так я хочу растянуть одну игру Yatzy на весь турнир. Но технически сайты не имеют такой возможности, чтобы игрок мог выкинуть не нужные угаданные исходы, ну или как то это означить. Разве что только в комментариях на форуме можно собирать. Но это трудоемкий процесс. Поэтому я решил ограничится "элементом случайности" - когда что выпало, то выпало и выбирать самую сильную комбинацию. С другой стороны, если навести пример с ничьими - у меня есть правило 2 ничьи в серии, то можно предположить, что угадавший серию где было 2 ничьи, явно хороший прогнозист. Еще пример: играя по таким правилам игроку приходится рисковать, где-то ставить не так как обычно, надеясь "собрать" не достающую для комбинации победу гостей. Но все же скорее склоняюсь, что покер-комбо - забава, и к умению хорошо прогнозировать не относится.foliant
"Утром - в газете, вечером - в куплете". Набросал три пользовательские функцайки для получения строк угаданных позиций. Так сказать, чутка двинул прогресс. Ну, и, пожалуй, пора уже какому-то эксельному конструктиву в теме замаячить, а то всё разговоры разговариваем…
Как пользоваться - см. в файле. Замечу, что диапазоны результатов матчей в таблице могут быть ориентированы как вертикально, так и горизонтально - функции сами разберутся внутри.
[vba]
Код
Function getResultLine(ByVal rng As Range) 'возвращает строку исходов матчей (фактических или прогнозных) Dim arr() As Variant Dim arrResult() As Variant 'исходы матчей (1X2) Dim varSplit As Variant Dim n As Integer 'ячеек счёта в диапазоне Dim i As Integer Dim host As Integer 'голы хозяина Dim guest As Integer 'голы гостя
arr = rng.Value If rng.Rows.Count >= rng.Columns.Count Then n = rng.Rows.Count Else n = rng.Columns.Count arr = WorksheetFunction.Transpose(arr) End If
ReDim arrResult(1 To n) For i = 1 To n varSplit = Split(arr(i, 1), ":") host = varSplit(0) guest = varSplit(1) If host > guest Then arrResult(i) = "1" 'победа хозяина ElseIf host < guest Then arrResult(i) = "2" 'победа гостя ElseIf host = guest Then arrResult(i) = "X" 'ничья End If Next i
getResultLine = Join(arrResult, "") 'например, 111Х2Х1111 End Function
Function getGuessedItemsByString(ByVal strFact As String, ByVal strForecast As String) As String 'возвращает строку угаданных позиций - при сравнении строк Dim n1 As Integer Dim n2 As Integer Dim res3 As String 'например, 111_2Х___1 - строка угаданных позиций игрока Dim i As Integer
n1 = Len(strFact) n2 = Len(strForecast)
If n1 <> n2 Then getGuessedItemsByString = "Разная длина строк" Exit Function End If
res3 = "" For i = 1 To n1 If Mid(strFact, i, 1) = Mid(strForecast, i, 1) Then res3 = res3 & Mid(strFact, i, 1) Else res3 = res3 & "_" End If Next i
getGuessedItemsByString = res3 End Function
Function getGuessedItemsByRange(ByVal rngFact As Range, ByVal rngForecast As Range) As String 'возвращает строку угаданных позиций - при сравнении диапазонов Dim n1 As Integer Dim n2 As Integer Dim res1 As String 'например, 111Х2Х1111 - фактический результат Dim res2 As String 'например, 11122ХХ221 - прогноз игрока Dim res3 As String 'например, 111_2Х___1 - строка угаданных позиций игрока Dim i As Integer
"Утром - в газете, вечером - в куплете". Набросал три пользовательские функцайки для получения строк угаданных позиций. Так сказать, чутка двинул прогресс. Ну, и, пожалуй, пора уже какому-то эксельному конструктиву в теме замаячить, а то всё разговоры разговариваем…
Как пользоваться - см. в файле. Замечу, что диапазоны результатов матчей в таблице могут быть ориентированы как вертикально, так и горизонтально - функции сами разберутся внутри.
[vba]
Код
Function getResultLine(ByVal rng As Range) 'возвращает строку исходов матчей (фактических или прогнозных) Dim arr() As Variant Dim arrResult() As Variant 'исходы матчей (1X2) Dim varSplit As Variant Dim n As Integer 'ячеек счёта в диапазоне Dim i As Integer Dim host As Integer 'голы хозяина Dim guest As Integer 'голы гостя
arr = rng.Value If rng.Rows.Count >= rng.Columns.Count Then n = rng.Rows.Count Else n = rng.Columns.Count arr = WorksheetFunction.Transpose(arr) End If
ReDim arrResult(1 To n) For i = 1 To n varSplit = Split(arr(i, 1), ":") host = varSplit(0) guest = varSplit(1) If host > guest Then arrResult(i) = "1" 'победа хозяина ElseIf host < guest Then arrResult(i) = "2" 'победа гостя ElseIf host = guest Then arrResult(i) = "X" 'ничья End If Next i
getResultLine = Join(arrResult, "") 'например, 111Х2Х1111 End Function
Function getGuessedItemsByString(ByVal strFact As String, ByVal strForecast As String) As String 'возвращает строку угаданных позиций - при сравнении строк Dim n1 As Integer Dim n2 As Integer Dim res3 As String 'например, 111_2Х___1 - строка угаданных позиций игрока Dim i As Integer
n1 = Len(strFact) n2 = Len(strForecast)
If n1 <> n2 Then getGuessedItemsByString = "Разная длина строк" Exit Function End If
res3 = "" For i = 1 To n1 If Mid(strFact, i, 1) = Mid(strForecast, i, 1) Then res3 = res3 & Mid(strFact, i, 1) Else res3 = res3 & "_" End If Next i
getGuessedItemsByString = res3 End Function
Function getGuessedItemsByRange(ByVal rngFact As Range, ByVal rngForecast As Range) As String 'возвращает строку угаданных позиций - при сравнении диапазонов Dim n1 As Integer Dim n2 As Integer Dim res1 As String 'например, 111Х2Х1111 - фактический результат Dim res2 As String 'например, 11122ХХ221 - прогноз игрока Dim res3 As String 'например, 111_2Х___1 - строка угаданных позиций игрока Dim i As Integer
Тогда должно быть такое преобразование (формула, макрос), которое создает строку угаданных позиций игрока: 111_2Х___1
Посмотрел файл с комбинациями из сообщения № 8. Всё-таки пока не очень догоняю. Вот есть результат выше (в моей цитате) - мы что с ним дальше делаем? Рассматриваем по отдельности две подстроки (это серии?) "111" и "2X"? Или же - как карты в покере: выкидываем все "подчерки", оставляем угаданные, сортируем их в руке и выстраиваем что-то типа "11112X" и только вот теперь начинаем анализировать? И что тут у нас - 4 угаданных или 6 ?
P.S. В самом покере (карточном), как я понял (хоть и не играю), порядок карт внутри руки абсолютно безразличен - ведь всегда можно переставить как надо: http://www.russiapokernews.com/poker-hand-ranking Тот же фул-хаус, оказывается, просто 3+2. Поэтому фул-хаусом, получается, будут и ABBBA, и AABBB, и AAABB, и ABABA... А в этой нашей задаче так же предполагается неучёт порядка? Или всё же существенен именно конкретный порядок внутри пяти "карт"?
P.P.S. В файле в сообщении № 8 есть определение "2 угаданые ничьи подряд и произвольно" - это как?
Тогда должно быть такое преобразование (формула, макрос), которое создает строку угаданных позиций игрока: 111_2Х___1
Посмотрел файл с комбинациями из сообщения № 8. Всё-таки пока не очень догоняю. Вот есть результат выше (в моей цитате) - мы что с ним дальше делаем? Рассматриваем по отдельности две подстроки (это серии?) "111" и "2X"? Или же - как карты в покере: выкидываем все "подчерки", оставляем угаданные, сортируем их в руке и выстраиваем что-то типа "11112X" и только вот теперь начинаем анализировать? И что тут у нас - 4 угаданных или 6 ?
P.S. В самом покере (карточном), как я понял (хоть и не играю), порядок карт внутри руки абсолютно безразличен - ведь всегда можно переставить как надо: http://www.russiapokernews.com/poker-hand-ranking Тот же фул-хаус, оказывается, просто 3+2. Поэтому фул-хаусом, получается, будут и ABBBA, и AABBB, и AAABB, и ABABA... А в этой нашей задаче так же предполагается неучёт порядка? Или всё же существенен именно конкретный порядок внутри пяти "карт"?
P.P.S. В файле в сообщении № 8 есть определение "2 угаданые ничьи подряд и произвольно" - это как?Gustav
Или же - как карты в покере: выкидываем все "подчерки"
Сама по себе "серия" тоже будет считаться, но параллельно, об этом позже если дело дойдет. Сейчас эта "серия" нужна для того чтобы выявить в ней "КОМБО". Так что да, мы не считаем подчерки, они не входят в серии. Видите зеленые ячейки вот это серия, и внутри нужно высматривать. И не обязательно подряд, как в покере, главное наличие. Пересмотрите строку 8 и 16 там показано, что в серии угаданные исходы "1" находятся в серии, но в разных местах. Про фулл-хаус я вам тоже писал в сообщении №5 - можно в разных конфигах.
А в этой нашей задаче так же предполагается неучёт порядка?
В таблице шаблонов расписаны примеры в основном предполагающие подряд и произвольно. Но это не все комбо, я просто не дописал самые сложные. В покере например это последовательность роял-стрит-флеш, которая как раз подразумевает последовательность определенную, как в прочем и сам стрит. Остальные - пара, тройка, каре - могут быть произвольными. Не дописал, потому что пришел в голову второй вариант, который показался ближе к цели. Он не особо то отличается, но там опущены критерии типа суммирование комбо, а предполагает найти самую старшую комбо из серии и не из 5 как я ранее писал, а из всей получившейся. Таким образом, чем длинее серия угаданных исходов, тем больше шансов собрать старшую комбинацию. Хочу сказать, что у меня нет готового "сценария" как оно должно выглядеть, я сейчас готов больше отталкиваться от Ваших возможностей. Как Вам будет удобнее и проще. По Вашему файлу виден прогресс, благодарю. Получается Вы сделали "вывод угаданных исходов" - это хорошо. Теперь нужно чтобы все угаданные исходы, а точнее ячейки где счет игроки выставляют, подстветились так как в примере. Визуально будут видны серии. Это самый минимум который нужен - уже в таком случае можно будет на худой конец считать вручную. Но как я говорил ранее, в идеале нужна система которая определит комбо - выберет из серии нужную комбинацию, если таковая имеется и запишет за нее очки в соответствующую ячейки. P.S. Забегая наперед, хочу сказать, что я все же еще пытаюсь найти способ, чтобы игроки имели непосредственное влияние на собирание комбо. Так как без этого это уже странный, как вы заметили покер - скорее на удачу . Это я озвучил идею админу сайта, он посоветовал пока запустить в режиме "как карта ляжет" потому что дополнительных ячеек, кроме двух - голы первой команды и голы второй, которые образуют счет - не предусмотрено. Пришел в голову вариант создать на гугл-докс эксель документ с никами игроков и их персональными ячейками в которые они сами бы вписывали те комбинации, которые желают оставить до следующего тура. То есть как в yatzy - 1 бросок костей = выбор комбинации или выпавших значений - на 2-й бросок меняются только не задействованные кости. и так до третьего броска. Игроки могли бы делать так: после первого тура игрок решил оставить готовую комбинацию, если была, во втором туре еще и после третьего суммируется все это. А если комбинации нет, то игрок должен выбрать исход или исходы к примеру после первого тура он угадал только 12 Х 21 - то есть серий нет, просто угаданные исходы, вот и выбирает на следующий тур 2 исхода из угаданных или 3 или 1. Соответсвенно во второму туре если он может выбрать комбо или просто произвольно угаданный исход. Таким образом формирует комбо. Но самая главная проблема, что я так понимаю, что создавая 1 файл для приема прогнозов в гугл-докс его может кто угодно из игроков редактировать, что сводит на нет все старания. Может у вас есть на примете вариант решения этой задачи?
Или же - как карты в покере: выкидываем все "подчерки"
Сама по себе "серия" тоже будет считаться, но параллельно, об этом позже если дело дойдет. Сейчас эта "серия" нужна для того чтобы выявить в ней "КОМБО". Так что да, мы не считаем подчерки, они не входят в серии. Видите зеленые ячейки вот это серия, и внутри нужно высматривать. И не обязательно подряд, как в покере, главное наличие. Пересмотрите строку 8 и 16 там показано, что в серии угаданные исходы "1" находятся в серии, но в разных местах. Про фулл-хаус я вам тоже писал в сообщении №5 - можно в разных конфигах.
А в этой нашей задаче так же предполагается неучёт порядка?
В таблице шаблонов расписаны примеры в основном предполагающие подряд и произвольно. Но это не все комбо, я просто не дописал самые сложные. В покере например это последовательность роял-стрит-флеш, которая как раз подразумевает последовательность определенную, как в прочем и сам стрит. Остальные - пара, тройка, каре - могут быть произвольными. Не дописал, потому что пришел в голову второй вариант, который показался ближе к цели. Он не особо то отличается, но там опущены критерии типа суммирование комбо, а предполагает найти самую старшую комбо из серии и не из 5 как я ранее писал, а из всей получившейся. Таким образом, чем длинее серия угаданных исходов, тем больше шансов собрать старшую комбинацию. Хочу сказать, что у меня нет готового "сценария" как оно должно выглядеть, я сейчас готов больше отталкиваться от Ваших возможностей. Как Вам будет удобнее и проще. По Вашему файлу виден прогресс, благодарю. Получается Вы сделали "вывод угаданных исходов" - это хорошо. Теперь нужно чтобы все угаданные исходы, а точнее ячейки где счет игроки выставляют, подстветились так как в примере. Визуально будут видны серии. Это самый минимум который нужен - уже в таком случае можно будет на худой конец считать вручную. Но как я говорил ранее, в идеале нужна система которая определит комбо - выберет из серии нужную комбинацию, если таковая имеется и запишет за нее очки в соответствующую ячейки. P.S. Забегая наперед, хочу сказать, что я все же еще пытаюсь найти способ, чтобы игроки имели непосредственное влияние на собирание комбо. Так как без этого это уже странный, как вы заметили покер - скорее на удачу . Это я озвучил идею админу сайта, он посоветовал пока запустить в режиме "как карта ляжет" потому что дополнительных ячеек, кроме двух - голы первой команды и голы второй, которые образуют счет - не предусмотрено. Пришел в голову вариант создать на гугл-докс эксель документ с никами игроков и их персональными ячейками в которые они сами бы вписывали те комбинации, которые желают оставить до следующего тура. То есть как в yatzy - 1 бросок костей = выбор комбинации или выпавших значений - на 2-й бросок меняются только не задействованные кости. и так до третьего броска. Игроки могли бы делать так: после первого тура игрок решил оставить готовую комбинацию, если была, во втором туре еще и после третьего суммируется все это. А если комбинации нет, то игрок должен выбрать исход или исходы к примеру после первого тура он угадал только 12 Х 21 - то есть серий нет, просто угаданные исходы, вот и выбирает на следующий тур 2 исхода из угаданных или 3 или 1. Соответсвенно во второму туре если он может выбрать комбо или просто произвольно угаданный исход. Таким образом формирует комбо. Но самая главная проблема, что я так понимаю, что создавая 1 файл для приема прогнозов в гугл-докс его может кто угодно из игроков редактировать, что сводит на нет все старания. Может у вас есть на примете вариант решения этой задачи?foliant