Амаранта, я не уверен, но по-моему если цель цепочки получить мажорное событие (ну или событие "рангом выше" чем события данной цепочке) - то 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 еще жив, нажмите кнопку обработки... (правда там что то не верно работает, уже не помню, не доделал).
Насколько быстрый способ, отимизация - не знаю... Мне было интересно так смоделировать сложение...
Читать дальше