Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

276
15 сентября 2005 года
Rebbit
1.1K / / 01.08.2005
Я тут хочу японские кроссворды написать на Builder-e.

Но написать просто интерфейс пользователя - ето же не интересно. Хочу чтоб решала прога кроссворды (причем больших розмеров). Видел код на сайте, мне бы словами кто обяснил если не сложно.
Помогите пожалуйста с алгоритмом.
2.8K
15 сентября 2005 года
Unglued
119 / / 15.09.2005
Цитата:
Видел код на сайте, мне бы словами кто обяснил если не сложно.



А где видел, не подскажешь?

292
15 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Rebbit
Я тут хочу японские кроссворды написать на Builder-e.

Но написать просто интерфейс пользователя - ето же не интересно. Хочу чтоб решала прога кроссворды (причем больших розмеров). Видел код на сайте, мне бы словами кто обяснил если не сложно.
Помогите пожалуйста с алгоритмом.


Я когда-то писал такую штуку. Для начала было бы неплохо если б Ты сам умел их очен хорошо решать.
У меня была следующая идея решения:
во первых набор функций которые раставляют кубики которые однозначно закрашены. Потом, когда их уже не достаточно запускается функция которая устроена следующим образом. Рассмотрим на примере горизонтальных полос. У на есть горизонтальня полоса в которой n закрашеных отрезков разной длины. Функция строит в памяти все варианты их расстановки, которые возможны по правилам. При этом процессе могут появиться новые закрашенные/незакрашенные клетки.
Когда уже и это не помагает, то запускаеться рекурсивная функция которая строит следующие варианты построения. Если она приходит к противоречию значит можно удалять ветку построения и соответствующий ей вариант расстановки закрашеных клеток.

Вобщем эта тема решала довольно непростые кроссворды. Может решала бы и более серйозные. Но я закинул ее написание еще на стадии продвижения рекурсивного алгоритма. Кстати работала довольно быстро.

276
15 сентября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Unglued
А где видел, не подскажешь?



http://www.codenet.ru/progr/alg/chines.php

Но не пробовал как работает

276
15 сентября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Matush
Я когда-то писал такую штуку. Кстати работала довольно быстро.



Спасибо большое за идею. Обязательно реализую.

И вот еще одна идейка:

Сначала делаем то что Ты сказал (но без рекурсии)
Можно припускать что какаято клетка закрашена, пробовать упорядочить кросворд с ней? и если противоречие - она точно незакрашена.
А потом опять можно Твои функции запускать.
А если их не для каждой строчки и столбца колбасить, а только для тех где недавно были изменения то должно работать бистрее.
Ну а уж потом и рекурсию :-)

Надеюсь на етом тема не закроется. Пишите пожалуйста.

292
16 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Rebbit
Можно припускать что какаято клетка закрашена, пробовать упорядочить кросворд с ней? и если противоречие - она точно незакрашена.


Да, хорошо так.

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

P.S. я на WINAPI

2.8K
18 сентября 2005 года
Unglued
119 / / 15.09.2005
Цитата:
Originally posted by Rebbit
http://www.codenet.ru/progr/alg/chines.php

Но не пробовал как работает



Это где и на каком я зыке написано?

276
19 сентября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Matush
Да, хорошо так.

Если есть желание и время, то можно написать решатель кроссвордов. Надо только утвердить способ представления данных.
Вобщем я на выходных закину свою идею представления



Желание есть, а времени нет. Но как я люблю говорить "В шею никто не гонит". Можно пробовать.
Извени что лезу перед Тобой, но виходные уже прошли, а кое-что у меня уже настрочено на С++ Билдере (хотя оно и на ином наверное скомпилится).
Вобщем ето класи для хранения даных. Последний все вместе держит. Оно конечно сырое. А так как я не то чтобы програмист хороший, то ето еще переделивать ... А возможно и вообще не подойдет. Короче посмотриш. Уже работаю над компонентом, который будет ето все рисовать на екране. Напиши пожалуйсто свое мнение.


2. for Ungleg.

Вообщето на паскаль похоже :-). Но я не компилировал.

292
20 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Rebbit
Извени что лезу перед Тобой, но виходные уже прошли, а кое-что у меня уже настрочено на С++ Билдере


Да, выходные прошли и за сроком я провтыкал. Но у меня тоже есть кое-чего наработаного (с графическим интерфейсом), но оно было сделанно давно и кривовато. Вот поправлю, тогда выложу сюда. Ато я знаю как тут могут код обхарить.

276
22 октября 2005 года
Rebbit
1.1K / / 01.08.2005
Чтото умерла ета тема, а так хочется сделать решатель.
Я уже нашкрябал кое-какой интерфейс (вернее сказать пародию на интерфейс).
Может всетаки присоединится кто ??? :)
Выкладываю все что успел (Builder 5)
За код не ругайте. Я и сам знаю что плохо програмирую :)

Надо 2 вещи.
1 - главное - решатель (сам я не потяну такое сделать)
2 - проверка пользовательского решения (ето не сложно)

Структура даных в модуле kernel
draw - компонента для отображения кросворда

Жду с нетерпением.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог