arxont писал(а):Активно тут рассылаю резюме на разные вакансии связанные с удалённкой по C#. Одно из заданий -
Напишите программу, которая будет имитировать процедуру automerge в системах контроля исходников.
В чем суть: имеется исходный файл (допустим, программный код), над которым затем поработали 2 программиста, каждый сам по себе. Получилось 2 варианта измененного исходника. Нужно выполнить слияние изменений. Те изменения, которые можно разрулить автоматически, нужно разрулить. Те изменения, которые конфликтуют между собой, нужно проигнорировать, просто поставить пометку «Конфликт» (в реальных системах разработчик конфликтующие изменения разруливает вручную в редакторе, но нам это не нужно).
Пример изменения, которое можно разрулить автоматически: один разработчик добавил функцию, второй в этом месте ничего не изменил.
Пример изменения, которое автоматом нельзя разрулить: оба разработчика изменили одну и ту же строку, но изменили ее по-разному. Соответственно, нельзя однозначно объединить эти два изменения – требуется ручное вмешательство.
Список примеров неполный – остальное предлагается домыслить вам. При этом учитывайте следующие начальные условия:
• Если два изменения разруливаются автоматом, не нужно заморачиваться, будет ли это реально корректно работать. Например, если внутри цикла один разработчик в одном месте добавил строку, другой – добавил свою строку в другом месте, то такое изменение можно разрулить однозначно (добавить обе строки). То, что при этом программа может поломаться, мы в задании не учитываем. Другими словами, никакой проверки синтаксиса не нужно.
• Если один программист удалил строку, а второй с ней ничего не сделал, то мы принимаем это удаление как корректное (т.е. выполняем). Т.е. мы доверяем этому изменению.
Строки считаются равными, если в них совпадают все символы, кроме отступов в начале и конце строки.
Писать на C#, версия фреймворка непринципиальна. Делать как консольное приложение или оконное – неважно, выбираете сами.
На входе: исходный файл; его измененный вариант 1-м программистом; его измененный вариант 2-м программистом.
На выходе: файл с объединенными изменениями.
Если беретесь, то оцените предварительно срок решения и сообщите оценку сразу (вместе с подтверждением).
Постарайтесь не пользоваться чужими наработками. Мы знаем, что чаще всего нет смысла изобретать велосипед, но нам интересно посмотреть на ваш код, а не на чужой.
Просьба решение присылать в виде двух архивов: с исполняемыми файлами и с исходниками.
Получил вчера такое же задание. Оно же не имеет адекватного решения. Если нам даны просто 3 текстовых исходника, где нет никаких параметров и т.д. То даже не учитывая синтаксис мы не можем никаким способом проанализировать редактирование. Какой принцип вы использовали при решении этой задачи? Просто это маразм.