OberonCore
https://forum.oberoncore.ru/

Штурм мозгов
https://forum.oberoncore.ru/viewtopic.php?f=27&t=1373
Страница 1 из 3

Автор:  inok [ Суббота, 28 Февраль, 2009 17:52 ]
Заголовок сообщения:  Штурм мозгов

В 2000 году я участвовал в окружной олимпиаде по программированию в Нефтеюганске. Там была одна задача которая до сих пор не дает мне покоя.
На олимпиаде из 40 человек ее решило только двое. Решили тупым перебором. Писать можно было на qbasic 4.5 и TP 7.0. Перебором решили на пасе, т.к. на кубарсике с его скоростью и тыркаться нечего было. Ограничение по времени 2 минуты вроде. Я писал на барсике и начал искать красивое решение, так и лажанулся неуспев дописать. Время вышло.
После олимпиады организаторы попросили у нас прощения, и посвятили нас в то, что мы участники эксперимента и задачи эти до нас никто не решал.
С тех пор я ее решить больше не пробовал. Но осадок остался
Господа математики дайте моей душе успокоиться.

Вот задача:
Имеется тетрадный лист в клеточку. Допустим 10х10.
И имеются входные данные, где через запятую даны числа (целые или вещественные не оговаривается, количество не оговаривается). Эти числа суть длины звеньев замкнутой ломаной. (самопересечения по-моему не оговаривались) построенной на узлах решетки нашего листа. Задача дать координаты всех узлов (если возможно то несколько вариантов) либо выдать что такая ломаная не существует

Автор:  Wlad [ Суббота, 28 Февраль, 2009 18:05 ]
Заголовок сообщения:  Re: Штурм мозгов

inok писал(а):
Вот задача:

Шаг решётки указывался?
Не помните, размеры решётки конечные были?
Допуск точности на длины звеньев давался?

Автор:  Info21 [ Суббота, 28 Февраль, 2009 18:10 ]
Заголовок сообщения:  Re: Штурм мозгов

Разве это не задача типа обхода шахматной доски конем?

inok писал(а):
В 2000 году я участвовал в окружной олимпиаде по программированию в Нефтьюганске. Там была одна задача которая до сих пор не дает мне покоя.
На олимпиаде из 40 человек ее решило только двое. Решили тупым перебором. Писать можно было на qbasic 4.5 и TP 7.0. Перебором решили на пасе, т.к. на кубарсике с его скоростью и тыркаться нечего было. Ограничение по времени 2 минуты вроде. Я писал на барсике и начал искать красивое решение, так и лажанулся неуспев дописать. Время вышло.
После олимпиады организаторы попросили у нас прощения, и посвятили нас в то, что мы участники эксперимента и задачи эти до нас никто не решал.
С тех пор я ее решить больше не пробовал. Но осадок остался
Господа математики дайте моей душе успокоиться.

Вот задача:
Имеется тетрадный лист в клеточку. Допустим 10х10.
И имеются входные данные, где через запятую даны числа (целые или вещественные не оговаривается, количество не оговаривается). Эти числа суть длины звеньев замкнутой ломаной. (самопересечения по-моему не оговаривались) построенной на узлах решетки нашего листа. Задача дать координаты всех узлов (если возможно то несколько вариантов) либо выдать что такая ломаная не существует

Автор:  inok [ Суббота, 28 Февраль, 2009 18:16 ]
Заголовок сообщения:  Re: Штурм мозгов

Владимир Лось писал(а):
inok писал(а):
Вот задача:

Шаг решётки указывался?
Не помните, размеры решётки конечные были?
Допуск точности на длины звеньев давался?


Шаг решетки единица.
Допуска небыло
Размер решетки фиксированный

Автор:  inok [ Суббота, 28 Февраль, 2009 18:23 ]
Заголовок сообщения:  Re: Штурм мозгов

Info21 писал(а):
Разве это не задача типа обхода шахматной доски конем?

inok писал(а):
В 2000 году я участвовал в окружной олимпиаде по программированию в Нефтьюганске. Там была одна задача которая до сих пор не дает мне покоя.
На олимпиаде из 40 человек ее решило только двое. Решили тупым перебором. Писать можно было на qbasic 4.5 и TP 7.0. Перебором решили на пасе, т.к. на кубарсике с его скоростью и тыркаться нечего было. Ограничение по времени 2 минуты вроде. Я писал на барсике и начал искать красивое решение, так и лажанулся неуспев дописать. Время вышло.
После олимпиады организаторы попросили у нас прощения, и посвятили нас в то, что мы участники эксперимента и задачи эти до нас никто не решал.
С тех пор я ее решить больше не пробовал. Но осадок остался
Господа математики дайте моей душе успокоиться.

Вот задача:
Имеется тетрадный лист в клеточку. Допустим 10х10.
И имеются входные данные, где через запятую даны числа (целые или вещественные не оговаривается, количество не оговаривается). Эти числа суть длины звеньев замкнутой ломаной. (самопересечения по-моему не оговаривались) построенной на узлах решетки нашего листа. Задача дать координаты всех узлов (если возможно то несколько вариантов) либо выдать что такая ломаная не существует


Что-то похожее вроде. Но по-моему не то. Хотя может и торможу...
Если видите явную параллель поясните пожалуйста, на пальцах если можно

Автор:  Wlad [ Суббота, 28 Февраль, 2009 18:36 ]
Заголовок сообщения:  Re: Штурм мозгов

Info21 писал(а):
Разве это не задача типа обхода шахматной доски конем?

Нет, длина прыжка - не фиксирована, а, следовательно, разрешённых положений-узлов - больше (если вообще возможно).

Автор:  Wlad [ Суббота, 28 Февраль, 2009 18:42 ]
Заголовок сообщения:  Re: Штурм мозгов

inok писал(а):
Шаг решетки единица.
Допуска небыло
Размер решетки фиксированный

Ну, тогда, допустимость сразу находится. Сначал, методом "грубой силы" - находим Н*(Н+1)/2 вариантов (допустимых по условиям задачи) расстояний между узлами решётки. Если хотим - сортируем для ускорения будущего поиска. Потом, пройдясь по всем числам ломанной - смотрим, есть ли такие, которые не равны ни одному из отсортированных расстояний...
Ну, а дальше - поиск в глубину по допустимым положениям концов векторов на узлах решётки, для каждого из начал. При этом, следующее начало - будет предыдущим концом. Для первого начала - прямой перебор по допустимым начальным положениям, в зависимости от расстояния до первого конца, попадающего на узел.

Автор:  inok [ Суббота, 28 Февраль, 2009 18:43 ]
Заголовок сообщения:  Re: Штурм мозгов

Владимир Лось писал(а):
Info21 писал(а):
Разве это не задача типа обхода шахматной доски конем?

Нет, длина прыжка - не фиксирована, а, следовательно, разрешённых положений-узлов - больше (если вообще возможно).


Вот примерно в этом я и усомнился...

Автор:  inok [ Суббота, 28 Февраль, 2009 18:45 ]
Заголовок сообщения:  Re: Штурм мозгов

Тут конечно ежу понятно что сумма векторов равна нулю. Но у меня лично какое-то интуитивное отторжение дискретности в этой задаче

Автор:  Wlad [ Суббота, 28 Февраль, 2009 18:50 ]
Заголовок сообщения:  Re: Штурм мозгов

inok писал(а):
Тут конечно ежу понятно что сумма векторов равна нулю.

???

Автор:  inok [ Суббота, 28 Февраль, 2009 19:03 ]
Заголовок сообщения:  Re: Штурм мозгов

Владимир Лось писал(а):
inok писал(а):
Тут конечно ежу понятно что сумма векторов равна нулю.

???


Ну ломаная то замкнутая. Или вы без проверок обходитесь

Автор:  inok [ Суббота, 28 Февраль, 2009 19:11 ]
Заголовок сообщения:  Re: Штурм мозгов

Владимир Лось писал(а):
inok писал(а):
Шаг решетки единица.
Допуска небыло
Размер решетки фиксированный

Ну, тогда, допустимость сразу находится. Сначал, методом "грубой силы" - находим Н*(Н+1)/2 вариантов (допустимых по условиям задачи) расстояний между узлами решётки. Если хотим - сортируем для ускорения будущего поиска. Потом, пройдясь по всем числам ломанной - смотрим, есть ли такие, которые не равны ни одному из отсортированных расстояний...
Ну, а дальше - поиск в глубину по допустимым положениям концов векторов на узлах решётки, для каждого из начал. При этом, следующее начало - будет предыдущим концом. Для первого начала - прямой перебор по допустимым начальным положениям, в зависимости от расстояния до первого конца, попадающего на узел.


Я делал тогда тупее но похоже. Без начального отсеивания заведомо неверных вариантов, "ставил" конец первого звена в угловом узле решетки. И поворачивал на 360 пока не войдет в границы листа, затем условие совпадения с конца с любым узлом. Если условия выполнены то ставил на найденный узел след звено и все сначала. При этом надо было по изуверски следить за суммой образованных векторов

Автор:  inok [ Суббота, 28 Февраль, 2009 19:36 ]
Заголовок сообщения:  Re: Штурм мозгов

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

Автор:  inok [ Суббота, 28 Февраль, 2009 19:52 ]
Заголовок сообщения:  Re: Штурм мозгов

Еще думаю логично вначале сделать проверку являются ли входные числа все целыми либо все вещественными, чтобы ограничить пространство поиска

Автор:  Wlad [ Суббота, 28 Февраль, 2009 20:50 ]
Заголовок сообщения:  Re: Штурм мозгов

inok писал(а):
Еще думаю логично вначале сделать проверку являются ли входные числа все целыми либо все вещественными, чтобы ограничить пространство поиска
Если, как Вы говорите, размер 10х10 - то, конечно, пространство сильно сузится. Но и вариативность входных длин будет не сильно широкой...
inok писал(а):
При этом надо было по изуверски следить за суммой образованных векторов
А - зачем?
inok писал(а):
Загвоздка в том, что решение должно быть правильным при любом раскладе. А раскладов тьма Такое ощущение что есть какое-то стройное решение, но ухватить не могу
Не факт!

Кстати, "крутить" опробуемый вектор, можно по Брезенхаму для окружности - будет быстрее.
Ещё быстрее - по длине вектора (как индексу) - смотреть в массиве списков заранее просчитанных пар катетов-смещений от текущей точки начала... А можно и их только для одной четверти/октета просчитывать и только знаки менять при актах пробы на подходящую точку для конца вектора...

Короче - творчество...

Автор:  Александр Ильин [ Суббота, 28 Февраль, 2009 21:04 ]
Заголовок сообщения:  Re: Штурм мозгов

Можно ли повторно использовать узлы решётки?

Автор:  Wlad [ Суббота, 28 Февраль, 2009 21:08 ]
Заголовок сообщения:  Re: Штурм мозгов

Александр Ильин писал(а):
Можно ли повторно использовать узлы решётки?
Кстати, - да! ???
Может, как параметром ввести?

Автор:  Info21 [ Суббота, 28 Февраль, 2009 21:36 ]
Заголовок сообщения:  Re: Штурм мозгов

Владимир Лось писал(а):
Info21 писал(а):
Разве это не задача типа обхода шахматной доски конем?

Нет, длина прыжка - не фиксирована, а, следовательно, разрешённых положений-узлов - больше (если вообще возможно).

Всё отличие в том, что на каждом шаге нужно генерить набор ходов для "коня" по текущей длине прыжка.
Т.е. находить возможные длины катетов для заданной (соотв. элементом списка для данного шага) длине диагонали.
Что есть маленькое и straightforward усложнение по сравнению c простым конем.

Читайте книжки, коллеги.

Автор:  inok [ Суббота, 28 Февраль, 2009 21:49 ]
Заголовок сообщения:  Re: Штурм мозгов

Александр Ильин писал(а):
Можно ли повторно использовать узлы решётки?

Так как это не оговаривалось, то можно

Автор:  inok [ Суббота, 28 Февраль, 2009 21:50 ]
Заголовок сообщения:  Re: Штурм мозгов

Info21 писал(а):
Владимир Лось писал(а):
Info21 писал(а):
Разве это не задача типа обхода шахматной доски конем?

Нет, длина прыжка - не фиксирована, а, следовательно, разрешённых положений-узлов - больше (если вообще возможно).

Всё отличие в том, что на каждом шаге нужно генерить набор ходов для "коня" по текущей длине прыжка.
Т.е. находить возможные длины катетов для заданной (соотв. элементом списка для данного шага) длине диагонали.
Что есть маленькое и straightforward усложнение по сравнению c простым конем.

Читайте книжки, коллеги.


Надо бы обмозговать
А лучше реализовать:)

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/