Отслеживаем изменения

  • 20
  • Недоступна
Считать с консоли 2 пути к файлам - file1, file2. Файлы содержат строки. Так как file2 является обновленной версией file1, то часть строк совпадает. Нужно создать объединенную версию строк из обоих файлов и записать эти строки в список lines.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (605)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Коваленко
Уровень 29, Краснодар
13 января, 08:28
сделал через счетчик
for (int i = 0; i < Math.max(listSecond.size(), listFirst.size()); i++)
а чтобы не словить на последней итерации IndexOutOfBound в начале счетчика добавил проверки if
if (listFirst.size() - 1 < i)
...
if (listSecond.size() - 1 < i)
Nik
Уровень 29, Калининград, Россия
12 января, 16:22
Решил с первого раза и моё решение проще и понятнее чем правильное. А на правильное смотрю и ничего не могу понять!
Nik
Уровень 29, Калининград, Россия
12 января, 16:44
ЕСЛИ НИЧЕГО НЕ ПОЛУЧАЕТСЯ ЧИТАЙТЕ НИЖЕ (Лично я читаю комментарии, когда уже совсем не получается, а так читаю после решения, чтобы посмотреть какие ещё варианты решений есть или что почитать на эту тему! \ \ \ \ 1) Загоняем оба файла в аррай листы А и Б 2) пока А больше 0: 3) Сравниваем первую строку А с первой строкой Б если эквивалентны заносим add(SAME, первая строка А) и удаляем обе строки иначе если 4) сравниваем первую строку А со второй строкой Б, если эквивалентны адд (ADDED, Б первая строка) и удаляем Б первая строка 5) иначе адд (REMOVED, А первая строка) и удаляем А первая строка 6) Если длинна А = 0 и длинна Б не равна 0 { адд(ADDED, Б первая строка) }
Sasha Dokuchaev Работает в Andersen
9 января, 20:12
Мне стало понятнее так: 1. Ключевая строка:
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME.
То есть после пары совпадений из 2ух файлов будет обязательно строка, у которой пары не будет (😥) 2. У строк из 1го файла есть 2 состояния (SAME | REMOVED), а у строк 2го файла есть состояния (SAME | ADDED) То есть после совпадения нужно сделать допущение, что следующая строка из 1го файла — REMOVED. Тогда логично, что послеследующая строка будет уже иметь пару со строкой из второго файла (проверяем). Если пара действительно есть — то наша строка действительно REMOVED. Если пары нету — то наша строка на самом деле SAME (следовательно, пары не нашлось строке из 2го файла) P.S. валидатор не знает метод
.lines().toList();
БелК в труселях
Уровень 31, Покровск, Ukraine
24 декабря 2021, 11:32
Добрый день. Я лично решал 5 дней с 99 попытки и с помощью КСЕНИЯ и ГОФФ и VK. Через циклы и ифы.
Runner76rus
Уровень 20, Ярославль, Россия
7 января, 19:58
Да уж, в настойчивости тебе не откажешь!)
Павел оператор в ОАО "Мозырский НПЗ"
9 января, 17:55
Ты все равно молодец. По моим прикидкам, 5500 учеников из 19000 дошедших до этой задачи, просто скипнули её и двинулись дальше)
Denis
Уровень 32, Краснодар, Russian Federation
13 декабря 2021, 14:54
Решил задачу со второй попытки. Первая попытка не прошла - не использовал "FileReader" при чтении из файлов 😁, ну и валидатору это не понравилось. При решении использовал "Queue" - удобно получать следующую строку. Мне не нравятся задачи "заточенные" на конкретные данные. Провёл эксперимент: в конец текста "file2" добавил строку "строка1" и воспользовался решением от JavaRush. В результате их решение ууууууууууушло в бесконечный цикл. А что если в "file2" несколько раз подряд сделать добавление данных или удаление?
БелК в труселях
Уровень 31, Покровск, Ukraine
24 декабря 2021, 11:28
Добрый день. Пожалуйста пришлите Ваше решение на почту я лично решал 5 дней с 99 попытки и с помощью КСЕНИЯ и ГОФФ и VK. Через циклы и ифы и тоже часто в бесконечность уходил. Заранее спасибо
Екатерина
Уровень 37, Москва
9 декабря 2021, 12:37
вроде всё решила, тесты (мои) все верно проходили, в том числе и из условия, валидатору что-то не понравилось в Добавлении.. который раз невозможно угадать, что именно
Just_perfect
Уровень 30, Russian Federation
5 декабря 2021, 17:11
мне кажется эта задача вполне заслуживает сложности "эпик"))
Buble76
Уровень 33, Москва, Россия
3 декабря 2021, 19:20
Вам удалось ее решить с 16 попытки. Если валя не принимает задачу по последнему пункту - не обязательно что вы накосячили со сравнением строк и прочее ... Пытался выловить ошибку без запуска программы так как вроде ничего сложного. В итоге 16 попыток. Оказалось что при копипасте кода на заполнение 2-го листа не изменил название буфферидера. В итоге выявил что второй лист был пустой и отсюда ползла ошибка. А валя ругалась только на последний пункт что я не правильно пишу SAME. Я там и искал ... 3 варианта сравнения перелопатил, думал где-то ошибку не вижу.
Buble76
Уровень 33, Москва, Россия
3 декабря 2021, 16:38
Делал как умная маша через тру с ресурсами - валя не желает это видеть в решении. Убрал тру и ошибка по незакрытым потокам чтения ушла !!!
Александр Горохов
Уровень 20, Дятьково, Россия
1 декабря 2021, 12:32
Интересная задача на логику, пришлось порисовать в тетрадке, представляя ход выполнения всех моих if'ов)))) (Когда-нибудь я всё-таки освою дебаггер для этих целей) Согласен, она бесячая тем, что нужно сперва "вкурить" условие. Но вообще заставляет пораскинуть мозгами.