Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2017, 20:01   #21
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Если нужна будет помощь - пиши в лс (в Readme указан мой адрес электронной почты). Я почти не использовал комменты, так как писал один, так что может быть сложновато разобраться (хотя я везде использовал значащие переменные).
tutejshy вне форума Ответить с цитированием
Старый 11.08.2017, 11:11   #22
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Пытался увеличить производительность, но ничего не вышло - это максимум. Построил алгоритм, который быстрее находит судоку с более чем 60-тью вычеркнутыми цифрами, но этот алгоритм оказался медленнее при меньших значениях... Так что это, наверно, окончательная версия алгоритма.
tutejshy вне форума Ответить с цитированием
Старый 11.08.2017, 14:59   #23
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Алгоритм можно выбирать в зависимости от запрошенного количества цифр.
Croessmah вне форума Ответить с цитированием
Старый 11.08.2017, 17:03   #24
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Это ничего не меняет: время ожидания все равно исчисляется десятками секунд!
tutejshy вне форума Ответить с цитированием
Старый 11.08.2017, 20:15   #25
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

tutejshy, возможно создание игры с нулем пустых клеток.
Как-то поиграть и не получается с такими условиями. )))


Цитата:
Сообщение от tutejshy Посмотреть сообщение
Это ничего не меняет: время ожидания все равно исчисляется десятками секунд!
Сгенерируйте поле без пустых клеток и выкиньте рандомно N чисел из него.
Croessmah вне форума Ответить с цитированием
Старый 11.08.2017, 22:30   #26
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Мельком глянул на код генерации.
У Вас там сложность зашкаливает
SIZE * N * (SIZE * (SIZE + ... + SIZE + SIZE * ....)),
где многоточиями указал то, что не стал разбирать,
там, наверное, еще по логарифму.

И на будущее, всё-таки пользуйтесь индексацией arr[index], а не *(arr + index)

Последний раз редактировалось Croessmah; 11.08.2017 в 22:36.
Croessmah вне форума Ответить с цитированием
Старый 12.08.2017, 03:28   #27
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Сгенерируйте поле без пустых клеток и выкиньте рандомно N чисел из него.
Нужно же, чтобы судоку имело только одно решение
Black Fregat вне форума Ответить с цитированием
Старый 12.08.2017, 11:54   #28
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Нужно же, чтобы судоку имело только одно решение
Да? Ну ладно тогда.
Croessmah вне форума Ответить с цитированием
Старый 12.08.2017, 20:53   #29
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
возможно создание игры с нулем пустых клеток.
Как-то поиграть и не получается с такими условиями. )))
Да, это не игра - я это добавил изначально при разроботке для проверки на правильность вывода, а потом оставил: мало ли кому понадобятся готовые матрицы) А так - сделать минимум вычеркиваемых цифр - дело пяти минут, но я просто не вижу причин это делать)

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Сгенерируйте поле без пустых клеток и выкиньте рандомно N чисел из него.
Очень глупый совет) По-твоему я просто так писал код решения судоку? Если сделать так, то это будет не судоку - настоящее судоку имеет только одно решение! Если сделать так, то судоку будет иметь несколько решений (или волей случая, только одно).

Цитата:
Сообщение от Croessmah Посмотреть сообщение
И на будущее, всё-таки пользуйтесь индексацией arr[index], а не *(arr + index)
Я использовал этот вариант по двум причинам:
1) Я только начал изучать Си (до этого немного программировал на паскале) и вариант через указатели мне был не знаком - поэтому я решил в нем разобраться.
2) В ф-ции я передавал массивы с помощью указателей (из-за первого пункта, а также потому, что не надо указывать размерность).

Синтаксический сахар я использовал только в двух случаях, когда обращался к элементам двумерного массива прямо в той же ф-ции, где его (массив) объявлял. Это из-за того, что запись *(*(array + i) + j) могла ввести в заблуждение (привычка писать *(array + i * SIZE + j)). Как по мне (как я уже говорил кодил на паскале) что запись a[i], что *(a + i) - вторая даже лучше, сразу видишь, что это Си))

Да, и тут никаких логарифмов - простейшая математика, уровня третьего класса. Даже операция деления встречается раза 2 за всю прогу)))

Последний раз редактировалось tutejshy; 12.08.2017 в 21:03.
tutejshy вне форума Ответить с цитированием
Старый 13.08.2017, 06:53   #30
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
ф-ции я передавал массивы с помощью указателей (из-за первого пункта, а также потому, что не надо указывать размерность).
В C если передать не указатель, а массив
с размером, то всё равно будет голый указатель.
Индексацию можно и к указателю применять.
А вот код будет намного читабельнее и проще.

Последний раз редактировалось Croessmah; 13.08.2017 в 06:55.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в тестировании нового инструмента для С# cpp46 Софт 0 18.12.2015 14:06
Нужна помощь в написании проги на паскале за вознаграждение!!! Indemion Фриланс 2 26.05.2015 22:12
Нужна помощь с алгоритмом...есть листинг проги на delphi DIMONCHIK666 Помощь студентам 12 23.03.2015 05:42
Требуется помощь в тестировании Utkin Софт 0 04.12.2009 10:19
нужна помощь в написании маленькой проги. о цене договримся ЛенаЛена Помощь студентам 1 26.01.2009 13:02