новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Решить оптимально тестовую задачу

    • #1
    • 02.05.2020 18:57
    0
    Условие: На улице стоят пять домов. Англичанин живет в красном доме. У испанца есть собака. В зеленом доме пьют кофе. Украинец пьет чай. Зеленый дом стоит сразу справа от белого дома. Тот, кто ку...  Подробнее>>
    • #2
    • 02.05.2020 18:58
    +1
    У меня один вопрос - что курит заказчик ?
    • #3
    • 02.05.2020 19:00
    +1
    Каков критерий оптимальности?
    • #4
    • 02.05.2020 19:13
    0
    Жуков Алексей Анатольевич
    У меня один вопрос - что курит заказчик ?


    Классическая задача Эйнштейна. Считается, что только 5% людей способны решить ее в уме (без компьютера и даже бумажки).
    • #5
    • 02.05.2020 19:16
    0
    Меня тоже интересует критерий оптимальности.

    К тому же
    Назаренко Сергей Васильевич
    и вывод одного из возможных вариантов

    эта задача имеет единственное решение.
    • #6
    • 02.05.2020 19:24
    0
    А еще в условии не хватает одного питомца и одного напитка.
    • #7
    • 02.05.2020 20:41
    0
    Назаренко Сергей Васильевич
    эта задача имеет единственное решение.


    Единственное решение можно отзеркалить - вот уже имеем второе решение.
    • #8
    • 02.05.2020 21:00
    0
    Денис
    Единственное решение можно отзеркалить - вот уже имеем второе решение.


    Интересно, как Вы будете отзеркаливать условие "Зеленый дом стоит сразу справа от белого дома."?
    • #9
    • 02.05.2020 21:09
    0
    Назаренко Сергей Васильевич
    Вы будете отзеркаливать условие


    Один раз скажу, что он справа, глядя из улицы на окна. Второй раз - глядя из окон на улицу )
    • #10
    • 02.05.2020 21:12
    0
    Денис
    Один раз скажу, что он справа, глядя из улицы на окна. Второй раз - глядя из окон на улицу )


    Тоже вариант :)
    Интересно, и какое из решений будет оптимальным? :))))))
    • #11
    • 02.05.2020 21:29
    0
    ну вообще то условие задачи немного другое -

    "Кто пьёт воду? Кто держит зебру?

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

    и тогда, да , будет одно решение.
    решить в уме можно, но это час времени примерно

    а написать алгоритм.... для начала попробуйте формализовать условия, там все не просто
    после формализации алгоритм сам напишется)
    • #12
    • 02.05.2020 21:59
    +1
    Олег
    а написать алгоритм.... для начала попробуйте формализовать условия, там все не просто
    после формализации алгоритм сам напишется)


    +100500

    Но думаю, что за недельку решить можно (у меня есть пара идей).
    Хотя очень интересно посмотреть, как Максим Игоревич решит, простите за тавтологию, задачу алгоритмизации данной задачи - за 3 часа.

    А вообще интересно с какой целью Заказчик сделал этот вброс на Сайте.
    Если это розыгрыш, то диверсия получилась знатная. :)
    • #13
    • 02.05.2020 22:01
    0
    Олег
    и тогда, да , будет одно решение.


    И тогда те кто решал - пишут, что при отзеркаливании для второго решения, чтоб осталось справа глядя с улицы на окна, два дома можно поменять местами без ущерба для остальных условий.
    • #14
    • 02.05.2020 22:23
    0
    Денис
    И тогда те кто решал - пишут, что при отзеркаливании для второго решения, чтоб осталось справа глядя с улицы на окна, два дома можно поменять местами без ущерба для остальных условий.


    ?? какое отзеркаливание
    я же писал точное условие задачи - "Кто пьёт воду? Кто держит зебру?Ещё одно замечание: справа означает справа относительно вас."
    • #15
    • 03.05.2020 06:30
    0
    Предоплата 300 рублей для них значима?
    • #16
    • 03.05.2020 06:33
    0
    Они могут решить или они могут запрограммировать? Кто запрограммит?
    • #17
    • 03.05.2020 06:45
    • Отредактировано: 03.05.2020 08:21:05
    0
    Олег
    я же писал точное условие задачи - "Кто пьёт воду? Кто держит зебру?Ещё одно замечание: справа означает справа относительно вас.


    Термины "условия задачи" и "требование задачи" - это не синонимы.
    Вы изменили условия - добавили зебру и воду, и уточнили что значит "справа". А требование задачи осталось прежним - вывести по нажатию кнопки расположение домов. С уточненными Вами условиями задачи у требования "вывести расположение" - два решения. Поставленную задачу можно решать и без зебры с водой - выводить вместо зебры и воды "Отсутствует", количество решений от этого не изменится.
    Интересней было бы изменить требование задачи, например, вывести расположение домов на Яндекс-картах )))
    • #18
    • 03.05.2020 09:37
    0
    Денис
    Интересней было бы изменить требование задачи, например, вывести расположение домов на Яндекс-картах )))


    "интересней" и полезней было бы изменить задачу так - " есть задача с 5-ю домами и 6-ю параметрами(далее текст)....необходимо дополнить задачу , увеличить количество домов и параметров до 6-ти и 7-ми. При этом новая задача должна иметь единственное верное решение. Программировать ничего не надо..."
    • #19
    • 03.05.2020 10:02
    0
    Олег
    для начала попробуйте формализовать условия, там все не просто


    А это Вы автору задания написали? Думаю, что формализация в данном случае - это задача исполнителя.
    • #20
    • 03.05.2020 11:57
    0
    Денис
    А это Вы автору задания написали? Думаю, что формализация в данном случае - это задача исполнителя.


    не, это как раз исполнителю.... там вроде очевидно
    • #21
    • 03.05.2020 13:31
    0
    посмотрел пару программных решений этой задачи...
    на прологе 15 строчек)

    на "нормальных" компилируемых языках, например СиШарп, страница кода и 30 сек на исполнение
    сложно сказать насколько дольше будет на интерпретаторе, пару часов?)

    решение на Си было простейшим - перебор по 3-ех мерному массиву(5х5х5, под 2 млн выборок) и проверка каждой выборки на все условия

    на 1С придется делать так же, может можно как то оптимизировать....в общем широкое поле для творчества)
    • #22
    • 03.05.2020 14:29
    0
    Олег
    на 1С придется делать так же, может можно как то оптимизировать


    Я тоже думал делать таблицей значений 5х5 и раскидыванием объектов по ячейкам путем прогона условий (тут самой большой сложностью оказалось придумать способ формализации условий).

    Но если с чисто академически рассматривать способы оптимизации (в плане побыстрее получить результат), то можно еще попробовать использовать генетический алгоритм.
    • #23
    • 03.05.2020 16:38
    0
    Олег
    перебор по 3-ех мерному массиву


    Что-то подсказывает, что перебор окрестят неоптимальным способом решения.
    • #24
    • 03.05.2020 17:16
    0
    Денис
    Что-то подсказывает, что перебор окрестят неоптимальным способом решения.


    Разумеется неоптимальное решение, но самое правильное с точки зрения математики.

    а если хочется оптимальности, то можно время исполнения уменьшить до 1 сек

    просто формализуем 4 шага решения этой задачи, те 4 шага , что мы в уме проделываем(ну или на бумаге, кто как)

    опять же кода будет на страницу, время исполнения меньше секунды

    начните с формализации первого шага, это самое простое

    делаем массив 5х5 и исходя из 11-ти условий заполняем все параметры первого дома(норвежца)

    следующие 3 шага делаются с использованием и условий задачи и уже заполненных данных в массиве

    только это совсем и не программирование даже
    • #25
    • 04.05.2020 14:17
    0
    Олег
    Разумеется неоптимальное решение, но самое правильное с точки зрения математики.

    Это задача не математическая, это задача комбинаторики.
    Для тех, кому нравится напрягать моСК - можете пойти сюда, почитать и, по возможности, вникнуть
    http://mathprofi.ru/zadachi_po_kombinatorike_primery_reshenij.html
    • #26
    • 04.05.2020 15:56
    0
    Николай
    Это задача не математическая, это задача комбинаторики.


    Именно в "задаче Эйнштейна" комбинаторику и использовать то особо негде. Это чисто логическая задача. Применение правил в правильной последовательности полностью и однозначно заполнит всю табличку. Максимум - в одном-двух местах нужно будет из двух вариантов выбрать тот, который приведет к правильному решению (второй вариант будет вести к невозможности решения).
    • #27
    • 06.05.2020 17:23
    0
    Николай
    Это задача не математическая, это задача комбинаторики.



    комбинаторика перестала быть разделом математики?))

    Уверен , что никогда не услышал бы подобных изысков на форуме по Си например....
    • #28
    • 06.05.2020 18:53
    0
    Олег
    комбинаторика перестала быть разделом математики?))

    Ожидал подобного коммента от какого-нибудь "умника" =)
    Т.к. это не форум по Си - придется "выслушивать изыски" местного комьюнити. Тут народ дотошный и определения "математика" недостаточно для формализации поиска решения - нужно обязательно уточнить, какой раздел математики, возможно привести примеры, статьи, отсылки... в общем, нудно тут у нас
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться