Японские сканворды

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Yvlad
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 28.02.2005 (Пн) 14:41

Японские сканворды

Сообщение Yvlad » 25.04.2006 (Вт) 22:21

Здравствуйте!
Кто ни-будь делал программу для решения японсих сканвордов?

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 25.04.2006 (Вт) 22:26

Yvlad
А что?
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 25.04.2006 (Вт) 22:43

А что конкретно требуется? Если рассматривать само исполнение - то там не так все и сложно. Конкретно для японских сканвордов - нет, а подобные задачи решала когда-то. Кстати, вопрос несколько не по этому разделу форума.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.04.2006 (Вт) 23:12

Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 26.04.2006 (Ср) 10:12

Статью с алголиста что-то второй раз пытаюсь прочесть и ниасиливаю.

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

А так - идея была простая. Последовательно идти по строкам и столбцам, заполняя те клетки, которые не могут быть не заполнены. Проходить так много раз, пока не решим кроссворд полностью или не упремся в ситуацию, когда за один полный цикл поле не изменилось.
Быть... или не быть. Вот. В чём вопрос?

Yvlad
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 28.02.2005 (Пн) 14:41

Сообщение Yvlad » 26.04.2006 (Ср) 14:23

Спасибо за отклик!
Как определить, что в клетке "точно есть" или "точно нет" в разных ситуациях в линиях разными функциями - это я могу. Но это не есть хорошо, а универсальной функции у меня придумать не получается. Статью http://algolist.manual.ru/misc/japancross.php то же понять не могу. И в коде, кажется, есть ошибки.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 26.04.2006 (Ср) 14:37

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

На всякий случай, поясню, какой алгоритм использовал я: берешь строчку или столбец, смотришь все комбинации клеток, не противоречащие уже существующей на поле ситуации и соответствующие цифрам в этой строке. Если в результате во всех этих комбинациях какая-то клетка закрашена или не закрашена, отмечаем ее.

Алгоритм не работает для ситуевин, когда положение некоторых клеток можно определить только одновременным анализом столбцов и строк. В принципе, можно для каждой валидной комбинации клеток в строке смотреть, существует ли при этом валидная комбинация в каждом столбце, это даже довольно просто реализовать, но подозреваю, что такая программа работать будет долго. Без этих проверок моя программка решала кроссворды 20х20 в течение нескольких секунд (на пентиуме-200 с учетом вывода на экран :) ).
Быть... или не быть. Вот. В чём вопрос?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 168

    TopList  
cron