Важная информация

User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 38

Тема: Бот для игры в "Морской бой": история, теория, практика

  1. #21
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    130
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV Посмотреть сообщение
    После установки 1нопалубников (если начинать с них), будет занято минимум 16 клеток, максимум - 36 клеток. Установка двухпалубников займёт минимум 18 максимум 36 клеток, установка трёхпалубников - мин 16, макс 30 клеток, 4хпалубный - мин 10, макс 18 клеток.
    Вот так и надо устанавливать, чтобы минимум клеток было занято после попадания. Тогда больше вероятность у противника не попасть.
    У меня в реале была такая хитрая стратегия: все корабли от 2 до 4 клеток расставлялись по краям. Их, как правило, быстро подбивали. Зато в центре оставалось огроменное непаханное поле, где прятались в случайных клетках одиночные кораблики - долгая изнурительная угадайка для противника получалась, которую сложно обыграть.

  2. #22
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV Посмотреть сообщение
    В общем то количество состояний никакого отношения к методике решения задачи не имеет.
    Количество состояний в "морском бое" уменьшается экспоненциально с каждым выстрелом, а метод перебора сходится к решению линейно.
    Цитата Сообщение от GriV Посмотреть сообщение
    Здесь, возможно, можно делать первые выстрелы таким способом, чтобы они значительно сокращали подмножество оставшихся вариантов
    Совершенно верно, об этом я и говорил, когда обосновывал необходимость стрелять в те клетки, где рассчитанная вероятность нахождения корабля максимальна, поскольку даже при промахе в этих клетках подмножество оставшихся вариантов сокращается быстрее всего.
    Цитата Сообщение от GriV Посмотреть сообщение
    (тот самый дебют), а потом уже считать.

    И ещё, можно хранить уже рассчитанные матрицы для первых 2-3 выстрелов (матрицы вероятности расположения). Можно сэкономить около 3e11 секунд :-)
    Вот, ты пришел к тому же выводу, что и я в предыдущем сообщении. Более того, хранение базы данных дебютов в "Морском бое" можно сделать довольно глубоким, до 7-8 ходов и более. Это ведь в шахматах каждый ход имеет очень много вариантов, поэтому базы данных дебютов имеют большой размер, а в "морском бое" все проще.
    Цитата Сообщение от GriV Посмотреть сообщение
    А методика поиска просто сокращает количество выстрелов до победы.
    Вот именно, наша задача как раз и заключается в максимальном сокращении кол-ва выстрелов, чтобы противник не успел за это же количество выстрелов уничтожить наш флот.
    Цитата Сообщение от GriV Посмотреть сообщение
    При самом неудачном расположении кораблей и неудачном расположении промахов, это будет чуть меньше количество выстрелов, т.к. каждый корабль закрывает собой минимум ещё такое же количество клеток, сколько он сам занимает,
    Но ты не учитываешь, что можно ведь в случае неудачи сначала обстрелять все клетки вокруг корабля, а только потом подбить сам корабль, т.е. окружение его ореолом клеток после подбития само по себе уже не поможет в такой ситуации сократить поле для дальнейшего поиска.

    Я вот не знаю пока, можно ли обосновать для конкретной методики максимальное количество выстрелов до потопления флота противника в наихудшем случае, т.е. при самой неудачной стрельбе. Может быть мы вернемся к этому вопросу после полного составления алгоритма для стрельбы.
    Цитата Сообщение от GriV Посмотреть сообщение
    А то, что установка предыдущего корабля резко сокращает количество вариантом для оставшихся - учитывается?
    Существует разница между тем, какие комбинации подвергаются анализу алгоритмом, который я ранее описал, и какие из них являются допустимыми по правилам "Морского боя". Я вот пока не нашел способа, чтобы до анализа комбинации, определить, допустима ли она по правилам. Или, иначе говоря, генерировать только такие расположения кораблей, которые заведомо являются допустимыми. Поэтому нет, сокращение вариантов для оставшихся не учитывается. Мой алгоритм должен перебрать все расположения, как допустимые, так и недопустимые, но конечно же, в результат расчета вероятностей эти недопустимые расположения не включаются. А вот во время выполнения программы они включаются, к сожалению.

    Я сильно подозреваю, что множество допустимых расположений кораблей значительно, в сотни раз меньше, чем общее множество всех координат кораблей, по которому я веду перебор своим алгоритмом. О точном соотношении количества элементов в этих двух множествах мы еще поговорим - это не праздный вопрос.

    Цитата Сообщение от GriV Посмотреть сообщение
    Результаты расчётов получились такие:

    N4 = 140
    N43 = 17440 (установка 1го 4 и 1го 3хпалубного)
    Как ты получил это и следующие числа, можно подробнее?
    Рассмотрим следующую ситуацию. Допустим, у тебя 4-палубник стоит вертикально в координате (4,1). Ты при этом не можешь разместить трехпалубник горизонтально в клетках типа (1,1), потому что он будет соприкасаться с четырехпалубником, хотя вроде бы клетки в прямоугольнике с диагональю (1,1)-(2,5) свободны. Учитывает ли твой расчет такие ситуации, особенно когда кораблей на поле уже несколько?

    Цитата Сообщение от GriV Посмотреть сообщение
    (как у тебя 3000 лет получилось???),
    миллиард секунд - 30 лет примерно, у нас было около 100 миллиардов секунд - что и составляет 3000 лет; тут в общем-то точность прикидок и не важна особо, всяко ведь не доживем
    Цитата Сообщение от GriV Посмотреть сообщение
    Сама задача легко распараллеливается на суперкомпьютере.
    Это да. Шутки шутками, но для составления базы дебютов вполне можно себе позволить погонять свои компы с недельку-другую, а если еще с товарищами объединиться - то и вовсе дело в шляпе. Ну, проги для расчетов, понятное дело, желательно будет оптимизировать, чтобы зря электричество не жечь.

  3. #23
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Как ты получил это и следующие числа, можно подробнее?
    Рассмотрим следующую ситуацию. Допустим, у тебя 4-палубник стоит вертикально в координате (4,1). Ты при этом не можешь разместить трехпалубник горизонтально в клетках типа (1,1), потому что он будет соприкасаться с четырехпалубником, хотя вроде бы клетки в прямоугольнике с диагональю (1,1)-(2,5) свободны. Учитывает ли твой расчет такие ситуации, особенно когда кораблей на поле уже несколько?
    Я как раз и написал, что полдня алгоритм писал сюда (его описание), но изза кривизны своих же рук похерил это сообщение.

    1. Ставим 4х палубный.
    Будет 20 вариантов по 12 клеток, 8 вариантов по 10 клеток, 32 варианта по 15 клеток и оставшиеся 80 вариантов по 18 клеток
    2. Ставим 1й 3хпалубник. Тут для каждого из вариантов предыдущего расположения надо так же разбивать его варианты по 10, 8, 12, 15 клеток, причём я полностью тогда расписал (сейчас лень повторять, но следя за рассуждением ты сможешь повторить эти рассуждения сам) что есть проблема что 4хпалубник может закрыть некоторые комбинации для 3хпалубника (это часть вариантов для 15 и 18 клеточного расположения 4хпалубника), оттуда получилось N43 самым точным и подсчитанным.
    3. Дальше ветвить стало просто сложно и стало тем более сложно это описывать, поэтому я просто брал что в дальнейшем остаётся некое число клеток, уже откусанное кораблями и для них высчитываются варианты. Откусывается самое минимальное количество (4 - для 1но, 6 - для 2х, 8 - для 3х палубных кораблей), что в общем то делает результат больше чем действительное значение. Для набора кораблей есть тема что они могу закрыть расположения, не связанные с близостью длинного корабля и борта. Т.е. если в один ряд положить 4палубник и 2 трёхпалубника, то ряд может быть полностью закрыт и отсекается около половины поля для двухпалубников определённого расположения. Это я тоже не учитывал.
    Собственно потому и написал, что реальный результат будет ниже, а полученные значения вариантов завышены.
    А в чём проблема считать "легальные" расположения кораблей? долго?
    Я приложил вычисления экселя, вот смотри как считал.
    Вложения Вложения
    Последний раз редактировалось GriV; 27.04.2011 в 01:28.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #24
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Количество состояний в "морском бое" уменьшается экспоненциально с каждым выстрелом, а метод перебора сходится к решению линейно.
    Используй ты золотое сечение, метод бисекции или метод гребёнки - каждый выстрел уменьшает вероятности расположений экспоненциально. Я не вижу что хоть один из методов обладает преимуществом. Результат хоть при переборе, хоть при любом другом методе - 100 выстрелов максимум. Поэтому - ещё раз - сложность вычисления вероятностей никак не связана тем, как уменьшаются вероятности. В разных ситуциях разные методы (не в общем случае, а в частном) будут давать разное (не)преимущество.
    Без разницы какую ты выберешь методику - главное чтобы оно как можно сильнее уменьшало оставшиеся варианты, а вот для этого уже тебе и надо использовать понимание того, что осталось на доске.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    довольно глубоким, до 7-8
    это как? У тебя на каждый ход вначале 100, потом 99, потом 98, потом 97 и т.д. (если ничего не подбил, конечно) вариантов развития. Итого на 7 это будет 100*99*98*97*96*95*94 = 8,06781E+13. У меня тут такие цифры получаются аж страшно. Или ты что то другое имеешь в виду?

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Но ты не учитываешь, что можно ведь в случае неудачи сначала обстрелять все клетки вокруг корабля, а только потом подбить сам корабль, т.е. окружение его ореолом клеток после подбития само по себе уже не поможет в такой ситуации сократить поле для дальнейшего поиска.
    Согласен :-)

    ---------- Post added at 01:48 ---------- Previous post was at 01:35 ----------

    Сейчас понял, что для 4хпалубного относительно 3хпалубного надо ещё сильнее сузить количество вариантов, не учёл что прислонённый к борту 4хпалубник может тоже мешать установке 3хпалубника в некоторых ситуациях... Можно подумать как это сделать, но именно правила тут являются тем самым, что сильно срезает количество вариаций расположения.
    Последний раз редактировалось GriV; 27.04.2011 в 01:44.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  5. #25
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как мы уже убедились, в том числе с помощью GriV, даже подсчитать, сколько всего существует легальных комбинаций размещения кораблей - непростая задача. Мне удалось применить к ее решению метод Монте-Карло. Сначала рассмотрим аналогичную задачу.

    Допустим, у нас есть прямоугольник U, внутри которого находится область D, как показано на рисунке 1. Требуется найти площадь области D. Классический способ решения этой задачи - это вычисление интеграла от функций, которые задают границу области D. Однако это может быть затруднено в случаях, когда эти функции сложные и плохо поддаются интегрированию. Также может быть, что эти функции и вовсе неизвестны в явном виде - тогда вычисление их интеграла невозможно. Для таких сложных случаев при вычисления площади области D есть смысл использовать метод Монте-Карло (метод Монте-Карло работает и для простых случаев, но он гораздо менее эффективен, чем классические методы).

    Метод Монте-Карло заключается в том, чтобы сгенерировать некоторое количество (N) случайных точек, равномерно распределенных по прямоугольнику U (рис. 2), и посчитать, сколько из них (M) находятся внутри области D. Тогда отношение M/N будет приблизительно равно отношению площадей D/U. Зная площадь U, таким образом, можно найти площадь D. Результат будет тем точнее, чем больше сгенерировано точек.

    Теперь посмотрим, как эту концепцию можно применить к вычислению количества легальных размещений кораблей в игре "Морской бой".

    Рассмотренные выше прямоугольник U и область D - это, в сущности, множества, при этом множество U включает в себя множество D. При расчетах для "Морского боя" мы имеем, с одной стороны, множество всех координат кораблей U, размер которого легко подсчитать (в одном из предыдущихсообщений я привел результат - около 2E+21). С другой стороны мы имеем множество легальных размещений кораблей D, границы которого определить трудно, но точно известно, что D является подмножеством U. Для любого элемента Xi множества U (таким элементом является комбинация коорданат и ориентации кораблей) мы можем проверить, принадлежит ли этот элемент множеству D (является ли комбинация координат и ориентаций легальной по правилам "Морского боя"). Для применения метода Монте-Карло необходимо сгенерировать некоторое количество (N) случайных комбинаций координат кораблей Xi и проверить, сколько из них (M) являются легальными. Разделив M на N и умножив на количество элементов U, получим оценку количества элементов D, которая будет тем точнее, чем больше N.

    Поскольку без ограничений на пересечения и ореолы кораблей, корабли друг другу не мешают, можно обоснованно считать, что мы будем генерировать случайные размещения Xi, равномерно распределенные по множествам U и D, если будем брать равномерно распределенные, независимые случайные числа в качестве координат и ориентации каждого корабля.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	figure1.png 
Просмотров:	280 
Размер:	3.0 Кб 
ID:	26820   Нажмите на изображение для увеличения. 

Название:	figure2.png 
Просмотров:	279 
Размер:	4.6 Кб 
ID:	26821  

  6. #26
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Публикую программы, реализующие вышеописанный алгоритм Монте-Карло. Для ускорения получения результата я написал их на Матлабе. Запускать следует скрипт "mc_ship_placement.m". Он генерирует случайные комбинации координат кораблей Xi до тех пор, пока не будет сгенерировано 1000 легальных комбинаций. При этом подсчитывается общее число сгенерированных комбинаций.

    При запуске Матлаба генератор случайных чисел всегда начинает свою работу в одной и той же последовательности, поэтому перед запуском моих программ генератор необходимо проинициализировать чем-нибудь случайным, например, показаниями системного времени.

    Результат работы моей программы: для получения M=1000 легальных комбинаций было сгенерировано N=3857458 случайных размещений кораблей. Иными словами, в среднем имеется одно легальное размещение кораблей на 3857 комбинаций произвольных их координат и ориентаций. Метод Монте-Карло сходится медленно, и поэтому мой результат имеет погрешность. Существуют обоснованные теоретически формулы для оценки этой погрешности, но мне лень сейчас их искать. Грубо можно прикинуть, что в полученном мною числе верны первые две значащие цифры. Поэтому, учитывая, что существует примерно 2E+21 комбинаций координат кораблей, из них легальных примерно в 3900 раз меньше. А всего в "Морском бое" существует примерно 5.42E+017 допустимых комбинаций размещения кораблей.
    Вложения Вложения

  7. #27
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хочу заметить, что несмотря на довольно долгое время работы моих программ на довольно быстром компьютере, получено было не очень много комбинаций, и еще меньше - легальных. Мои программы нуждаются в переводе на C и оптимизации, чтобы выдавать более точные результаты.

  8. #28
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Переписал программу на Си, чем удалось добиться ее ускорения более чем в 100 раз. Если раньше мне приходилось довольно долго ждать чтобы получить хотя бы 1000 допустимых правилами случайных комбинаций размещения кораблей, то теперь с легкостью удается генерировать десятки тысяч таких комбинаций.

    Например, после первого запуска моей программы было перебрано 300 миллионов комбинаций координат кораблей, из них оказалось допустимыми 76944, а соотношение составляет 1:3898.

    Программа прилагается. Она является почти идентичным переводом опубликованной ранее программы на Матлабе. Ввиду трудности генерации случайных допустимых размещений кораблей, программа сохраняет сгенерированные легальные комбинации в файл, оставляя возможность дальнейшей обработки этих комбинаций другими программами.

    Я не вылизывал сильно эту программу, поэтому думаю, что в рамках языка Си ее можно еще более ускорить, а в перспективе - перевести на ассемблер, с использованием векторных инструкций MMX. Вот тогда ее можно будет запускать на неделю всем сообществом и потом дружно анализировать результаты.
    Вложения Вложения

  9. #29
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного переделал программу, чтобы она крутилась в бесконечном цикле и сохраняла полученные комбинации в файлы.

    Пришлось отказаться от библиотечного генератора случайных чисел rand(), так как он имеет слишком малый период повторения последовательности (около 2 млрд). Я написал программу для проверки расположений кораблей, сгенерированных mc_ship_placement.c, на предмет повторений. В пределах одного файла (~77000 комбинаций) повторений не было обнаружено, но вот во втором файле уже пошел повтор. При генерации 300 миллионов размещений кораблей производится в 30 раз больше случайных чисел (по 3 на каждый корабль), что исчерпывает библиотечную последовательность очень быстро.

    Я реализовал генератор ran2 из книги William H. Press - "Numerical Recipes in C", который имеет период повторения порядка 1E+18. Этого достаточно на первое время, хотя впоследствии нам следовало бы обратиться к более мощным генераторам случайных чисел, таким как Mersenne-Twister. На форумах пишут, что ran2 медленнее, чем Mersenne-Twister, при гораздо более коротком периоде повторения. Но последний метод сложнее в реализации, а я хотел получить результат побыстрее.
    Вложения Вложения
    Последний раз редактировалось Barmaley_m; 29.04.2011 в 23:03. Причина: Исправил название книги "Numerical Recipes"

  10. #30
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,053
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дальнейшая генерация случайных размещений кораблей и сохранение их в файлы лишь для целей определения соотношения количества допустимых комбинаций к общему количеству координат кораблей - это стрельба из пушки по воробьям. Даже один прогон mc_ship_placement.c дает хорошую оценку этого соотношения (примерно 1:3900). Однако нам все же нужны эти комбинации, и как можно больше, потому что с ними можно делать очень интересные вещи!

    В сообщении №17 я описал алгоритм, который позволяет получить точные значения вероятности попасть в корабль для каждой клетки. Для этого необходимо перебрать все допустимые размещения кораблей, представив каждое из таких размещений в виде двоичной карты (1 - клетка занята, 0 - клетка свободна). Затем сложить все эти двоичные карты, в результате получится матрица чисел. Разделить ее на количество рассмотренных комбинаций размещения кораблей - и получится искомая матрица вероятностей.

    Реализовать этот метод на современных компьютерах невозможно из-за того, что множество допустимых размещений кораблей слишком велико (в сообщении №26 была получена оценка этого числа в 5.42E+17). Но можно получить приближенный результат опять-таки методом Монте-Карло!

    Если мы будем перебирать не все множество допустимых размещений кораблей D, а лишь случайную выборку из него (т.е. некоторое количество допустимых размещений, выбранных из общего множества равномерно случайным образом) - то сумма двоичных карт таких случайных выборок будет сходиться к тому же результату, который получается путем полного перебора. Это утверждение доказывается в рамках общей теории семейства методов Монте-Карло. Для нашего случая я пока не буду его конкретно доказывать, но мы может быть вернемся к этому вопросу позже, особенно в случае, если появятся сомнения. Но пока что их нет, моя практика совпадает с предсказаниями теории.

    Чтобы осуществить вышеописанное, нам нужно генерировать случайные размещения кораблей, равномерно распределенные по множеству D всех допустимых размещений. Если мы пронумеруем по порядку все элементы множества D, то есть поставим в соответствие каждому элементу этого множества натуральное число от 1 до size(D) - то тогда дальше становится легко. Генерируем случайное число с равномерным распределением в диапазоне от 1 до size(D) и находим соответствующее ему расположение кораблей. Полученные таким образом расположения будут равномерно распределены по D.

    Проблема в том, что мы на данный момент не получили способа нумерации допустимых комбинаций размещения кораблей по порядку, так что вышеописанный способ неприменим. Но можно показать, что случайные допустимые расположения кораблей, полученные mc_ship_placement.m, равномерно распределены по D.

    mc_ship_placement.m генерирует расположения, равномерно распределенные по множеству U всех их координат, и отбирает из них только те комбинации, которые принадлежат множеству D. Но так как D является подмножеством U - то эти отобранные комбинации являются равномерно распределенными и по D. Поэтому комбинации, сгенерированные и сохраненные в файлы программой mc_ship_placement.m, могут быть использованы для расчета карты вероятностей попадания в корабли при выстрелах.

    Прилагаю карту вероятностей, рассчитанную мной для необстрелянного поля на основе сложения 843076 допустимых комбинаций размещения кораблей, полученных mc_ship_placement.c. Этот результат является довольно "чистым" и "симметричным", поскольку было учтено довольно большое число случайных комбинаций. Ранее я получал ту же карту только на основе 2000 и 80000 комбинаций, и она имела тот же вид, только была более зашумлена. Так что метод Монте-Карло для ее расчета действительно сходится к некоторому пределу.

    Любопытно, не правда ли? Максимальные шансы попасть в корабль имеются у границ поля, но не в углах! Излюбленное место для размещения кораблей опытных игроков, было найдено моим методом без каких-либо указаний на предпочтения игроков и их стратегии!
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	probs.png 
Просмотров:	21676 
Размер:	11.3 Кб 
ID:	26855  

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 31.01.2011, 18:31
  2. Ответов: 0
    Последнее: 15.08.2010, 14:38
  3. Ответов: 7
    Последнее: 07.10.2009, 14:58
  4. Ответов: 4
    Последнее: 06.01.2009, 00:08

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •