|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.10.2021, 15:48 | #1 |
Новичок
Джуниор
Регистрация: 07.10.2021
Сообщений: 1
|
Решения задачи с матрицами. JS
Вы — инженер, проектирующий роверы-беспилотники. Вам надо рассчитать путь ровера по заранее известной местности с максимальной экономией заряда.
Местность Вам пришли данные о местности в закодированном виде: фотография, сконвертированная в матрицу с числами. Одна матрица — это прямоугольный снимок размером х на y метров. Вот пример одной такой сконвертированной фотографии, на ней снимок в 100 на 100 метров: Фото 1: 0 2 3 4 1 2 3 4 4 1 3 4 5 6 2 4 5 6 7 1 6 7 8 7 1 Числа показывают высоту над уровнем моря. 0 — это высота ровно на уровне моря, а, например, 4 — это 4 единицы над уровнем моря. На Фото 1 закодирован холм, пологий слева и резко обрывающийся справа. Небольшой холмик выглядел бы вот так Фото 2: 0 1 1 1 0 1 1 3 1 1 0 1 1 1 0 0 0 0 0 0 А вот так: ложбина между двумя холмами Фото 3: 1 1 2 3 4 1 0 1 2 3 2 1 1 1 2 3 3 1 0 1 4 3 1 1 0 На этих данных - овраг с резким перепадом высот в середине снимка Фото 4: 1 1 6 7 7 1 1 6 7 8 1 6 7 8 9 А на этом снимке - маленькая ямка Фото 5: 3 4 4 4 4 3 3 2 1 1 1 4 4 2 1 1 3 4 4 4 2 2 3 4 Данные придут вам в виде матрицы с неотрицательными числами. Размер матрицы NxM. Ровер Ровер всегда движется из верхней левой точки [0][0] в правую нижнюю точку [N - 1][M - 1], где N и M - это длина и ширина матрицы. У вашего ровера есть несколько ограничений: Движение Из любой точки ровер может двигаться только в четыре стороны: на север, юг, запад, восток. Ровер не может ехать по-диагонали — эта функция еще не реализована. Ровер не может вернуться в ту точку, в которой уже был. Заряд Ровер ездит на заряде. Вы знаете, что для ровера очень затратно подниматься и опускаться. Он тратит единицу заряда на само движение, и дополнительные единицы на подъем и спуск. Ровер бы вообще спокойно жил, если бы ездил по асфальту в Беларуси, тогда бы он тратил себе линейно заряд и в ус не дул, но жизнь его сложилась иначе. Расход заряда Заряд расходуется по правилу: На 1 шаг ровер всегда тратит 1 единицу заряда. На подъем или спуск ровер тратит заряд, пропорциональный сложности подъема или спуска. Сложность подъема или спуска - это разница между высотами. Например, в такой местности 1 2 1 5 на путь из [0][0] в [0][1] ровер потратит 2 единицы заряд: 1 единица заряда на само движение, и еще 1 единицу заряда на подъем в [0][1]. А из [0][1] в [1][1] ровер потратит 4 единицы заряда: 1 единица на само движение, и 3 единицы (5 - 2) на подъем Вам надо рассчитать путь ровера из верхей левой [0][0] точки в правую нижнюю [N - 1][M - 1] точку с минимальной тратой заряда. Вы не заранее знаете размер фотографии, которую будете обрабатывать, N и M - произвольные неотрицательные числа. План Сделайте план пути и планируемый расход в txt файле. Назовите файл path-plan.txt Для фотографии 0 4 1 3 план будет такой: path-plan.txt [0][0]->[1][0]->[1][1] steps: 2 fuel: 5 Ровер едет из 0 в 1 в 3, сделает два шага, потратит 5 заряда. Если бы он поехал сначала в 4, потом в 3, он бы сделал то же количество шагов, но потратил бы 7 заряда. Оптимальный путь: 2 шага и 5 заряда. Если на карте есть несколько вариантов пути, выберите любой из них. Обработка ошибок Что-то всегда может пойти не так. Например, в матрице могут оказаться кривые данные или ее может вообще не быть. Напишите обработку ошибок. Главное правило обработки ошибок: если ровер не может двигаться по карте, выбросите exception и завершите программу. В файл path-plan.txt напишите причину. Она всегда должна начинаться с фразы "Cannot move because ...". Придумайте свое описание проблемы. Пишите на простом и понятном английском. Требования Реализуйте функцию calculateRoverPath(map) по правилам в задаче Результат отработки функции запишите в txt файл Если в вашем языке нужно название класса (как в Java или C#), назовите класс Rover В файле Rover.__ должен быть метод calculateRoverPath. Вы можете добавить любой другой функционал в этот файл, любые другие функции и комментарии. Главное, чтобы функция calculateRoverPath работала Не используйте System.out.*, Console.Write*, console.log и любые другие методы для выведения данных в консоль Используйте готовые файлы для решения. Не меняйте название файла, название методов и параметров. Если вашего языка нет в папке с готовыми файлами, напишите об этом рекрутеру, который дал вам задание Напишите для себя .gitignor. Не добавляйте в репозиторий .idea, src, venv, DS_STORE и подобные файлы. В репозитории должен лежать только файл с решением и README.md Ограничения Нельзя использовать библиотеки для реализации алгоритма. Реализовать алгоритм вы можете только своими силами. Можно использовать библиотеки для записи в файл. Есть такое ТЗ помогите пожалуйста найти решения. P/S желательно с небольшими коментариями. |
07.10.2021, 15:56 | #2 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,179
|
ну видно же что это учебная задача.....
сами учитесь, не хотите - тему в раздел фриланс, там за денюжку решат вам |
08.10.2021, 03:04 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Задача о кратчайшем пути - выбирайте алгоритм по вкусу и реализовывайте, дерзайте
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помощь в решении задачи в vba с матрицами | xxx-shurik-xxx | Microsoft Office Excel | 3 | 29.05.2015 19:55 |
Помощь в решении задачи в vba с матрицами | xxx-shurik-xxx | Помощь студентам | 0 | 28.05.2015 21:52 |
Паскали(задачи с матрицами) | sllh_111 | Помощь студентам | 7 | 20.11.2010 07:51 |
Задачи с матрицами | blondinochka | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 11.05.2009 11:36 |
Паскаль. Две задачи с матрицами | L@dy | Помощь студентам | 1 | 12.06.2007 23:58 |