Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Создание цепочек с максимальной эффективной длиной
Формат: Исследование Ведущий/автор: nick Период проведения: 01.07.2006 – 05.08.2006 г. Ключевые слова: Цепочки Место проведения/источник: http://dhlab.ru/forum/index.php?topic=630.0;all Связанные документы: Персоналии: nick,Daedalus, Quark, Silence, Амаранта, Depo, konste Редактировал текст: Jassarias
Создание цепочек с максимальной эффективной длиной
nick Пришла в голову идея относительно того, как можно составить цепочку с максимальным блоком карт без транзитов, в идеале ‑ 35:1. Алгоритм пока не готов на 100%, но вот что получилось: 1. Берем 3 карты так, чтобы первая и третья были одинакового номинала. Например: 6п 7б 6ч 2. Берем другие две карты одинакового номинала, первую ставим перед последней картой цепочки, а вторую ‑ после нее. Например возьмем Кк и Кб. В результате имеем 6п 7б Кк 6ч Кб. 3. Делаем так же пока есть возможность взять из колоды пару карт с одинаковым номиналом. При этом следим чтобы не было транзитов по мастям. Транзитов по номиналу в этом случае быть не может по определению. При этом имеем ввиду, что на данном этапе нам важен только номинал карт, поэтому во избежание транзитов по масти можем свободно менять местами карты с одинаковым номиналом во всем раскладе. Ну или полностью заменить карты одного номинала картами другого номинала. В конце цепочки получим транзит, который запустит схлопывание влево, и при этом останется одна неиспользованная карта. Например в результате получилось: 6п 7б Кк 6ч 7п Кб Хк 7ч Дп Хб Тк Дч 9п Тб 8к 9ч Тп 8б Вк Тч Кп Вб Дк Кч 8п Дб 9к 8ч Хп 9б 6к Хч Вп 6б Вч и 7к ‑ неиспользованная 4. В получившейся цепочке берем карты под номером 2 и 4 (слева). Делаем так, чтобы для каждой из этих карт было верно следующее: если позицию этой карты принять за x, то для всех возможных в данной цепочке n карты с позицией x + (n*4) должны быть той же масти, что и карта в позиции x. Т.е. Начиная с данной карты каждая четвертая должна быть той же масти. Этого надо добиться опять же взаимным перемещением карт одного номинала, либо же полной заменой карт одного номинала на карты другого номинала. В результате получаем такую вот схемку: (2) /‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\ (1) |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| 6п 7б Кк 6ч 7п Кб Хк 7ч Дп Хб Тк Дч 9п Тб 8к 9ч Тп 8б Вк Тч Кп Вб Дк Кч 8п Дб 9к 8ч Хп 9б 6к Хч Вп 6б Вч (1) |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| (2) \‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/
где 1 ‑ это последовательности пар номиналов, а 2 ‑ последовательности мастей. 5. Дальше имеем проблему ‑ куда девать последнюю неиспользованную карту? У меня она удачно легла в начало цепочки, таким образом получилась цепочка 3:33. Но это не факт что так будет всегда. Нужно работать над оптимизацией метода. В итоге получаем: 7к 6п 7б Кк 6ч 7п Кб Хк 7ч Дп Хб Тк Дч 9п Тб 8к 9ч Тп 8б Вк Тч Кп Вб Дк Кч 8п Дб 9к 8ч Хп 9б 6к Хч Вп 6б Вч Выводы: 1. Что в этой цепочке интересного помимо тайминга? Интерес представляет динамика сложения. Сначала идет сложение по максимуму по направлению от конца к началу, а затем ‑ полностью от начала к концу. (Это если не брать в расчет первое сложение.) Тоесть получаем как бы две волны ‑ сначала влево, потом ‑ вправо. 2. В данном случае первая серия сложений идет по номиналу, а вторая ‑ по масти. Но это следствие частного случая, использованного в методе. В общем случае можно действия из пп. 3 и 4 вести просто с учетом того, чтобы обеспечить сложение в первом и втором цикле. Это я сейчас понял. Возможно здесь зарыта собака с неиспользованной картой ‑ как все‑таки поставить ее в конец. 3. Опять же в данном конкретном случае при первом цикле сложения полностью поглощаются две масти (крести и пики). Крестовая семерка поглощается при первом сложении. 4. В данном случае наглядно видно как второй цикл сложения заложен в первом цикле. Интересно будет посмотреть на это также в других цепочках. План моих дальнейших действий по теме: 1. Доработать метод с тем расчетом, чтобы он стал как можно более универсальным. В частности вывести правила чтобы в первом и втором циклах сложений могли участвовать как номиналы так и масти. 2. Доработать метод для создания цепочек 35:1 3. Выяснить, подходит ли метод для создания ЦС любого тайминга. 3. На основе метода выявить закономерности. Исследовать закономерности на предмет применимости к другим раскладам. И еще. В процессе копания с цепочкой возникла идея программы, где в окне можно было бы видеть цепочку и все этапы сложений, а также типы сложений ‑ по мастям или по номиналам.
Daedalus nick, я тож пробывал такую штуку, называя это преплетением кос, и не нашел варантов сложения для 35:1 и 34:1 возмона такое покатит для двух колод. мне эта идея нравится по одной причине. запомнив простое правило для четырех соседних карт, былоб здорово автоматицки получать сложение 35:1. такого рода цс не зависимы от времени и потенциально оч мощные, так как эффект в конце только
Quark Много сил я потратил в своё время на эти ЦС и могу заявить что "сложные" и "хитрые" ЦС не проявили дополнительных чудесных качаств по сравнению с обычными. Тут скорее дело не в том что складывать, а кто. 35:1 скорее весьма слабые, а не мощные. Ну как вы можите проделать ряд мелких толчков для свершения крупного события да ещё и сгладить откат в такой ЦС ? Ритмика тоже почила в бозе. Это скорее наиболее выхолощенный вариант.
Daedalus Quark, подозреваю что в твоих прогонах ты регистрировал лишь свои намеренные действия, тоесть ответы той стороны не учитывались. Я пока полон оптимизма, но вот при анализе удачного сложения событий, дествително с ритмикой не совсем все точно какбы. тоесть надо пересмотреть ее более пристально.
Quark Я много чего учитывал. Но я это я, может у тебя будет иначе.
nick Как я понимаю, основная ценность цепочек типа 35:1 в возможности использовать подмены. Типа щелкнул пальцами ‑ и в дамках. Проблема этого метода пока в том, что это только частный случай. Здесь вот и последняя карта остается неиспользованной, и ее в принципе невозможно воткнуть в конец при таком раскладе. Так что надо в первом и втором цикле сложений использовать попеременно масти и номиналы. Тогда наверное прокатит. Будем пробовать. Как говорилось в каком‑то фильме, Аллаху нравится разнообразие Smiley/Улыбается Цепочка 3:33 ‑ тоже неплохой вариант. Здесь начальный блок из трех карт как раз подпадает под приветствие Духа. А для чего важна ритмика? Вопрос по терминологии ‑ цепочка, в которой сложение запускается последней картой ‑ это 35:1 или 36:0 ?
Daedalus Quark, не могу сказать, что у меня большой опыт проведения намеренных ЦС с самого начала, скорее больше продолжения и завершения запущенных, причем я уверен что законы ПМ работают очень точно, и знаю что за чувство испытываешь на последнем этапе, когда мона уверенно сказать ‑ вот расклад сложился. что касается цс вида 35:1, имхо, для работы с ним, нуна в первую очередб поймать правильное начало. это событие, которое должно подать что‑то типа зова какбы, предчувствие что оно закончится успешным образом. когда будет у меня несколько успешных таких опытов, хе‑хе, придет своего рода умение, мона попробывать и чистый ксперимент ‑ взять рядовое минорное событие и довести его до мажорного (именно в этом фишка 35:1). по‑моему главная проблема при проходении этой цс, не дать сложиться ей на протяжении долгого времени, не распылять ее потенциал. другой уже намеренный аспект, события должны типа обрамлять главную цель расклада. и третий аспект ‑ волшебный, когда в расклад включать ваще чисто конфигурационные события, формальные, которые совершенно не будут связаны с конечной целью. вот это волшебство поставляет та, другая сторона Wink/Подмигивает nick, мне кажется лучче 36:0 гораздо информативнее показывает такие цс, и с другой стороны 35:1 ‑ результат сложения любых складывающихся раскладов. ритмика полезна для того чтоб примерно ориентироваться по времени для регистрации событий. мона сказать что вобщем‑то период времени на каждую цс дествительно какой‑то определенный, но ждать и рассчитывать на это не стоит.
nick Короче, слона‑то я и не приметил! Вот она, 35:1: 6п 7б Кк 6ч Вп Кб Хк Вч Дп Хб Тк Дч 9п Тб 8к 9ч Тп 8б Вк Тч Кп Вб Дк Кч 8п Дб 9к 8ч Хп 9б 6к Хч 7п 7к 6б 7ч (2) /‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑\/‑‑‑‑‑‑‑‑‑‑‑‑‑\ (1) |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑‑‑‑| 6п 7б Кк 6ч Вп Кб Хк Вч Дп Хб Тк Дч 9п Тб 8к 9ч Тп 8б Вк Тч Кп Вб Дк Кч 8п Дб 9к 8ч Хп 9б 6к Хч 7п 7к 6б 7ч (1) |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| |‑‑‑‑‑‑‑‑‑| (2) \‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/\‑‑‑‑‑‑‑‑‑‑/ То есть получается, что для данного алгоритма, который сейчас применен, внимание надо обратить на вторую карту расклада, и на последние 4.
Silence Почему 35:1? Складываться же начинает на 36 карте (7ч), а не на 35 (6б), значит 36:0. ИМХО, целесообразнее цепочки 35:1‑ где 35 карт это нынешняя цс, а 36‑я карта‑ начало новой. Не помню где, но про это много написано, также как и про то, чтобы ожидаемая карта (результат, цель расклада) не была в самом конце.
nick Точно. Это моя путаница в терминологии. В любом случае в результате у нас останутся 2 карты ‑ начало новой ЦС. Касательно целесообразности ситуацию прояснить не могу ‑ не хватает знаний.
Амаранта Вот что написано про целесообразноть не заканчивать цепочку картами желаемого результата в "Мастер‑классе Имбецеллы": "Составьте цепочку из 36 карт. Некоторый ее участок будет такой: Тб (сила вселенной, удача) направляет продавца (киоскера, игровой автомат) Дк, и тот выдает вам объект удачи, который я советую не включать в цепь событий. При этом вы получаете нечто ценное ‑ 7б. Итого: Тб‑Дк‑7б. ... Было бы глупо оставлять в конце Дк‑7б. Что вы дальше будете делать с продавцом или игральным автоматом? Зачем он нужен в вашей жизни? Лучше завершите цепочку повседневным ритуалом вечернего мочеиспускания, любовной игрой или обычным часто повторяющимся событием жизни (к примеру, возлиянием вина)."
nick Амаранта, я не уверен, но по‑моему если цель цепочки получить мажорное событие (ну или событие "рангом выше" чем события данной цепочке) ‑ то 36:0 это как раз то что надо ‑ останешься с мажорным событием.
Daedalus в мастер‑классе дествително изучались онли минорные цс, к которым не отнесешь такие длинные типа 35:1 или 36:0
Амаранта Не знаю на сколько это актуально xal В цепочке 35:1 мы можем последней картой показать Духу, что ЦС закончена(как в начале у нас же было какое‑то флаговое действие о начале цепочки), например похлопать в ладоши или бухнуться на колени и выразить благодарность pray
nick Как один из способов исследования закономерностей думаю нагенерить много цепочек 36:0 и сравнить. Начал писать программу. Товарищи, у кого‑нибудь есть алгоритм проверки цепочки на сходимость более быстрый, чем последовательный анализ цепочки каждый раз с самого начала?
Depo Nick, ты первый, кто задался таким вопросом Wow! На самом деле, каждый раз с самого начала проверять ЦС на сходимость не нужно, достаточно после обнаружения сложения счетчик уменьшить на 3 (но результат не меньше 1‑цы) Wink/Подмигивает Правда это будет работать, если использовать так называемые структуры типа "Запись" (незачем каждый раз переписывать массивы). Запись можно создать на C/C++. В VisualBasike такой тип данных встроен. Теперь о наибыстрейшем алгоритме пару слов. Писать прогу самому некогда. Да и на С++ сейчас не работаю, даже компилятор не установлен. Идеями поделюсь 1. Создаем класс Карта. В нем определяем перемнные ‑ ссылка на следующую карту в цепочке и ссылка на предыдущую карту в цепочке (т.е. указатели на объекты такого же типа ‑ типа Карта) 2. Определяем внутренний метод "сложение карты". По этому методу у соседних "объектов" меняет значения параметров‑указателей. Например закрывается третья карта. Вторая карта указывала на третью, будет указывать на четвертую, четвертая карта указывала на третью, будет указывать на вторую. После этого вызывается деструктор, третья карта исчезает. 3. Определяем метод "проверка сложения". Проверяются валентности и номиналы "соседей". Если складываются ‑ вызываем "сложение" и передаем управление "проверке сложения" предшествующей карты. Если нет ‑ последующей карте. Если карта последняя, метод завершает свою работу. Тут можно встроить проверку на длинну окончательной цепочки. Вот так, затем стоит в программе инициализировать всю цепочку, вызвать метод "проверка сложения" на второй карте, и все. Смотрим результат. Никаких циклов thumbsup Nick, может возмешься реализовать? Или кто нибуть? Если непонятно, готов пояснить еще раз. Алгоритмов готовых к сожалению нет shuffle
nick Depo, спасибо, метод я понял! Я реализовал сейчас алгоритм через массивы, постаравшись оптимизировать его по максимуму. Пишу на Яве (знаю только ее), там есть быстрый метод копирования массивов. У меня была идея использовать текущую транзитную карту как указатель, но здесь есть нюанс ‑ придется держать еще отдельный список всех возможных транзитов и апдейтить его после каждого сложения, т.к. мы можем, например, в процессе сложения продвинуться до конца влево, а справа останутся возможные транзиты. Подумаю над этим. И еще ‑ необязательно прибивать объекты. Им можно сделать реюз, это тоже сэкономит ресурсы.
konste опять мы пишем програмки под текущие нужды, а не нечто универсальное. Но думаю, Вы правы коллеги, ‑ тут важен результат, а не метод, пожалуй... Вот бесполезный в общем ‑ то пример моей попытки проверять на схождение не классическим путем ‑ Когда то я действовал так (на php) создавал огромный массив ‑ 9*4*36, и искал сложения по признаку нахождения карт с номерами n и n+2 в одном столбце или строке. Начинал от n =1. Если находил сложение делал N = n, затем копировал весь двумерный массив ‑ расклад на следующий слой Большого массива, при этом для всех номеров n > N, делал n = n+1. На старте в слое 0 лежит табличная запись ПМ в виде номеров карт 9 столбцов ‑ это номиналы, 4 строкам карты пример на http://www.pm.h11.ru/PM1/pm1.php еще жив, нажмите кнопку обработки... (правда там что то не верно работает, уже не помню, не доделал). Насколько быстрый способ, отимизация ‑ не знаю... Мне было интересно так смоделировать сложение... Фишка в том, что на стадии заполнения нулевого слоя, мы упорядочиваем ПМ таким образом, который облегчает визуальный поиск сложений...
nick Программку я сваял. Правда проверка сложений не на основе алгоритма Депо, надо будет поэкспериментировать с ним. Результативность: 1 цепочка нужного калибра примерно на 50000 оптимизированных вариантов. 7 ‑ 8 цепочек в минуту на моей машине. За время тестирования нагенерил 600+ штук. Одну сложил вручную. Мое предположение о том, что справа от складывающихся карт не может быть транзитов пока сложение не дойдет до левого края оказалось в корне неверным. Думаю над статистическим анализом.
nick konste, а какая функциональность должна быть у универсальной софтины?
konste nick в принципе это уже обсуждалось (здесь и аворлд), и если говорить в серьез, то, наверное, ‑ в другой теме... Если совсем кратко ‑ возможность подключать ‑ отключать плагины‑модули с различными функциями. Возможность взять и написать такой модуль самому, если нужно, за вечер, скажем. В модулях ‑ такие вещи как ввод цепочек в текстовой форме (видимо, с учетом разных кодировок...), вывод разными способами, проверка на сходимость, генерирование цпочек различными способами (мне видится несколько разных модулей...), хочется иметь графический игровой стол с сукном, и картами... ‑ все это тема большого обсуждения... Поэтому делать по частям было бы разумно. Впринципе, я по весне накропал нечто вроде ядра и даже писал пару модулей... но интереса было не много к этому и дело у меня заморозилось... Думаю, к осени мне понадобится эта вещь самому и она будет дописана. Демку можно найти где то у нас на форуме... Просто я программист ‑ любитель. Не профессионал, и это накладывает отпечаток на скорость разработки (а иногда и на качество). Если интересно ‑ давай заведем тему или перейдем в обмен сообщениями, чтобы не флудить здесь.
nick konste, можно и подевелопить Smiley/Улыбается У меня есть пару идей по графическому интерфейсу. Проблема в том, что я из языков знаю только Java. C++ для меня темный лес. Немного могу на C#, но это все равно что Java в принципе, и я на нем ничего про GUI не знаю. По поводу среды с плагинами ‑ для Java есть Eclipse. Изначально IDE, но его переработали именно как фреймворк сейчас. Наверняка для C тоже что‑нибудь подобное есть. Это чтобы велосипед не изобретать.
nick Собственно сорцы и результат. Только я транслитерировал русский буквы, т.к. у меня в консоли русский не пашет. PMGenerator ‑ генерит цепочки и сваливает их в текстовый файл. PMChainChecker ‑ отдельный класс для проверки цепочек. Читает их из файла. Для работы генератора он не используется. По сути это 2 независимых класса.
nick Продолжаю генерить цепочки 36:0. На данный момент их 7000 с гаком. Хочу довести тысяч до пятидесяти, и тогда начать анализ, исключив предварительно повторы. Вот какие мысли по поводу анализа: В сходящейся цепочке мы можем поменять местами все группы карт одинаковых мастей и одинакового номинала между собой, при этом в случае номиналов нужно оставить неизменной последовательность мастей, а в случае мастей ‑ номиналов. Тогда это не повлияет на сходимость цепочки. Более того, динамика сложения останется идентичной. В связи с этим возникает вот такой процесс анализа ‑ берем каждую цепочку, и отмечаем в ней последовательности номиналов и мастей, причем номиналы именуем как A1, A2, A3 ... A9, а масти ‑ B1, B2, B3, B4. При этом цифра группе будет присваиваться не заранее, а исходя из первого вхождения данного номинала или масти вв конкретной цепочке. Таким образом можно будет увидеть паттерны сложения независимо от конкретных мастей и номиналов. При удачном результате можно будет попытаться применить метод ко всем видам цепочек. Удачный результат для меня ‑ если удасться осмыслить принцип.
konste nick! Smiley/Улыбается Мысль возникшая у Тебя прианализе ‑ это и есть Теорема Масяни в действии. Мне казалось, что замен можно делать сколько угодно и каких угодно последовательно. Поэтому, еще на аворде я пытался сводить это к "скелетам" ‑ один скелет на 9!*4! цепочек, кажется... Так что я советую выбрасывать из анализа приводимые друг к другу цепочки. Если ты заглянешь в тему ‑ "pq и r представление" (да и вообще в раздел "Алфавит событий"), то наверное разберешся, что в сходящихся ЦС есть еще возможность заменять местами карты с одинаковм, скажем так, pq‑ рейтингом, без искажения сложения. Конкретный пример того, о чем говорю ‑ пост номер 8 темыhttp://www.dhlab.ru/forum/index.php/topic,330.msg2433.html#msg2433, Или пост номер 5 темы http://www.dhlab.ru/forum/index.php/topic,242.0.html "А что если..." Думаю Тебе будет любопытно это. Думаю, также, было бы интересно найти с Тобой общий язык и сравнить результаты исследований. Если у меня появится время, ‑ попробую предположить, с аргументами, какого общее число цепочек, которые Ты ищешь.
nick konste, ты как истинный программер отсчитываешь посты с нуля Smiley/Улыбается Да, необходимо учесть все особенности, чтобы максимально обобщить паттерны. Таким образом помимо нахождения последовательностий вхождений мастей и номиналов я учту позиции карт, где масть либо номинал не имеют значения для сходимости расклада. Таким образом в результируюущем паттерне мы будем иметь не только вхождения типа [A1,B3], но и [?,B3], где ? ‑ номинал, не играющий роли в раскладе. Приводимые друг к другу цепочки очевидно надо выкинуть, ты прав, т.к. должны остаться только уникальные паттерны. На их базе попробую сделать общий вывод относительно цепочек 36:0. Неплохо было бы подвести под получиввшиеся паттерны теоретическую базу, так чтобы выявить их все, а не только те, которые получатся из анализа случайной последовательности цепочек.
konste именно. на днях свои мысли по теоретической базе оформлю сюда. Ибо они имеются.
nick Написал алгоритм перекодировки цепочек в последовательности мастей и номиналов, пронумерованных по порядку первого вхождения в цепочку. Проверку на масти и номиналы, не принимающие участия в раскладе, пока не реализовал. Что характерно, при перекодировке цепочек их количество практически не уменьшилось (если уменьшилось, то на несколько штук). Так что возлагаю надежды на неучаствующие масти и номиналы. Либо же придется искать более сложные закономерности, чтобы таки вывести алгоритм. Класс PMChainAnalyzer перекодирует цепочки и складывает результат в колелкцию с поддержкой уникальности. 36_0_chains_temp.rar ‑ исходные цепочки (17793 штуки, из них ок. 20 повторяющихся). 36_0_chains_temp_converted.rar ‑ те же цепочки, сконвертированные. Я на несколько дней отъеду. Заодно будет время подумать.
nick Реализовал проверку на масти и номиналы, не принимающие участия в раскладе. При этом за масть или номинал, не принимающий участия в раскладе, считалась, соответственно, масть или номинал данной карты, которые не участвовали ни в одном сложении. Это было сделано чтобы максимально сократить количество цепочек. Я предполагаю и другой вариант определения неважности для расклада ‑ фактическая возможность заменить данную карту с неважной мастью или номиналом другой картой с неважной мастью или номиналом соответственно, но такой подход приведет к возрастанию, а не сокращению количества цепочек, если при этом в качестве идентифицирующего признака цепочки рассматривать динамику сложения. Такой подход пока мной не реализован. Получились интересные результаты. 1. Было взято 17793 первоначальных цепочки 36:0. Из них уникальных ‑ 17776. 2. Цепочки были сконвертированы из вида Tc 8p Kk Dk 6p 7p Xc Tk Tp Xb Db Vp 9p 6b 8c Kc 7k 9b 6c 7c Xk Vb Kb Dc Vc Tb 7b 9c 6k 8b Dp Xp 9k Vk Kp 8k в вид 00 11 22 32 41 51 60 02 01 63 33 71 81 43 10 20 52 83 40 50 62 73 23 30 70 03 53 80 42 13 31 61 82 72 21 12 результат ‑ 17776 уникальных цепочек. 3. Цепочки были сконвертированы из вида 00 11 22 32 41 51 60 02 01 63 33 71 81 43 10 20 52 83 40 50 62 73 23 30 70 03 53 80 42 13 31 61 82 72 21 12 в вид 0_ _1 _2 _2 _1 _1 6_ 02 _1 63 _3 _1 8_ _3 _0 _0 _2 _3 _0 _0 _2 _3 _3 _0 _0 _3 _3 80 _2 13 _1 _1 82 _2 _1 12 где пропущены номера мастей и номиналов, не участвовавщих в сложении. Результат ‑ 17776 уникальных цепочек. 4. Цепочки были сконвертированы из вида 0_ _1 _2 _2 _1 _1 6_ 02 _1 63 _3 _1 8_ _3 _0 _0 _2 _3 _0 _0 _2 _3 _3 _0 _0 _3 _3 80 _2 13 _1 _1 82 _2 _1 12 в вид +_ _+ _+ _+ _+ _+ +_ ++ _+ ++ _+ _+ +_ _+ _+ _+ _+ _+ _+ _+ _+ _+ _+ _+ _+ _+ _+ ++ _+ ++ _+ _+ ++ _+ _+ ++ где все масти и номиналы, участвовавшие в сложении заменены знаком "+", а не участвовавшие ‑ "_". Результат ‑ 17776 уникальных цепочек. Здесь стоит иметь ввиду, что все анализируемые цепочки были сгенерированы с использованием генератора случайных чисел и простенького алгоритма оптимизации по первым двум сложениям. Одако даже принимая во внмание этот факт, то, что первая конвертация не дала результатов кажется мне в высшей степени странным, при том что до конвертации обнаружилось около 20 полностью совпадающих цепочек.
konste Черезвычайно интересные результаты! с 31 июля у меня будет неделька отпуска, постараюсь отписаться здесь и сделать альтернативный анализ результатов. nick ‑ спасибо за эту работу от меня.
nick konste, приятно что результаты могут кому‑то пригодиться Smiley/Улыбается Сейчас я хочу проанализировать сконвертированные цепочки с пропущенными "неважными" мастями и номиналами а предмет статистики появления тех или иных мастей/номиналов. Может это наведет на мысли о формуле.
konste Самое странное ‑ такое количество уникальных цепочек ‑ просто неожиданно много. Тоже хочу объяснить такой результат.
nick Довел число цепочек до 21976. Опять во всех трех случаях одинаковое число ‑ 21959. Думаю над результатом.
nick Прослышал я про могучую тулзу для анализа статистических данных ‑ SPSS. Одно из ее применений ‑ нахождение скрытых закономерностей в данных. Думаю заюзать для анализа цепочек. Для начала, правда, надо будет осилить книгу ‑ больше 600 страниц Smiley/Улыбается
|
Последнее изменение этой страницы: 2019-03-22; Просмотров: 288; Нарушение авторского права страницы