Считать с консоли 2 пути к файлам - file1, file2.
Файлы содержат строки. Так как file2 является обновленной версией file1, то часть строк совпадает.
Нужно создать объединенную версию строк из обоих файлов и записать эти строки в список lines.
Отслеживаем изменения
- 20
Недоступна
Комментарии (745)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Kit Leskinen
позавчера, 19:50
Комментарии запутали еще больше. Потратил 3 часа на понимание что от меня хотят.
Еще не решил, но предположу что:
Тут мы сравниваем конкретные строки, последовательно
1. Тут мы уже не сравниваем конкретные строки, а уже определяем есть ли хоть одна такая же строка в другом файле в любом месте
"считаем, что строку удалили" в зависимости от варианта хранения строк в своей программе мы от нее как-то избавляемся или игнорируем Тут опять же не сравниваем конкретные строки, а смотрим есть ли в другом файле такая же строка, уже в файле file1, но с учетом тех строк которые были удалены в пункте 2
Резюмируя:
- в 1 пункте мы сравниваем строки на тех же местах в обоих файлах
- в 2 и 3 пункте мы ищем строку по всему другому файлу, а не как в 1 пункте, из-за этого возникло недопонимание задачи
Послезавтра к с новыми силами сделаю еще раз :) 0
Kit Leskinen
позавчера, 18:37
Думал почему у меня так странно пример описан в окошке, а потом я его сделал пошире *facepalm*
![]()


0
Иван
20 мая, 12:13
Не понимаю условие: строка1 и строка1 в одном файле - это 2 одинаковых строки? или цифры закончились после 5?
И условие: "Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME" определяется изначально порядком расположения строк в файлах? или это надо сделать в алгоритме?
0
Taurnil
5 мая, 18:25
Пришлось основательно пораскинуть мозгами.
В итоге родилось решение:
1. Считать файлы в листы строк;
2. Ввести два счетчика индексов листов;
3. Пройтись циклом по условиям ниже, цикл заключен в try;
4. Проверяем эквивалентность двух строк в двух листах равными индексами
5. Проверяем эквивалентность двух строк со смещением индекса в одном или другом листе
6. В конце цикла ловим исключение, выясняем на каком смещении произошел выход за пределы листа, делаем соответствующие выводы
Удачи!
0
Vic
вчера, 17:26
Решение похожее, только я не применял счётчик, а удалял элементы из списков, а отработка исключений та же.
0
Paul
2 мая, 13:31
1.Правильное решение должно уйти в бесконечный цикл (с чего-то вдруг).
2. Результат выполнения программы не посмотреть (см. п.1).
3. Условия вообще не понятные:
а дальше пошли лингвистические дебри:
ADDED - добавленный
REMOVED - удаленный.
Слово "добавленный" подразумевает к чему-то прибавить что-то
НО!!!!!! В условии написано: "В оригинальном и редактируемом файлах пустых строк нет!"
То есть в случае не пустой строки результат должен быть таким?
Или нет? Но мы этого никогда не узнаем, потому что правильное решение уходит в бесконечность. +1
Taurnil
5 мая, 18:14
Нет, чувак.
В условии есть ограничение :
Из него следует, что после состояния ADDED или REMOVED всегда идет SAME.
В твоем примере, соответственно, значение будет зависеть от того, что находится в третьей строке:
0
Gans Electro
12 апреля, 04:15
Заметка 1. Итак в итоговый файл добавить нужно не все это, а только то что под записью общий.
Идея: открыть два счетчика так как: "Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME." все должно работать как маятник 0
very junior java developer www.codewars.com/r/TTH6EQ
31 марта, 18:02
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME.
Кто ещё не решил задачу, обратите внимание на эту строчку, это очень важно.... и сильно облегчает алгоритм сравнения строк.
0
Taurnil
5 мая, 18:36
Я так скажу: если этого условия не будет, задачу решить будет вообще невозможно.
Потому что будет неоднозначность уже вот здесь:
Если точно неизвестно, что ADDED или REMOVED могут идти только строго через SAME, то здесь можно изменения интерпретировать как угодно:
и даже так:
0
very junior java developer www.codewars.com/r/TTH6EQ
5 мая, 21:42
ну...... , а оно есть, оно есть.... )))
0
Ольга
29 марта, 06:56
Так и не смогла победить валидатор. Написала два рабочих решения: одно своё, второе примерно похожее из популярных комментов, протестировала их с десяток раз, но увы.
0
POG
24 марта, 11:38
После задач Отслеживаем изменения и Знакомство с тегами хочется только ![]()

+1
Viktor Backend Developer в CoreClass
10 марта, 18:05
Долго не мог понять условия задачи правильно, оказывается:
1.Не могут идти подряд ADDED или REMOVED.
2.Операции ADDED и REMOVED всегда разделены.
Задачка интересная, решил без коллекций, способом предложенный в комментах, с помощью методов BufferedReader:
0
Екатерина Екатериновна
16 апреля, 10:34
Похоже, это облегчило бы мне жизнь. Я конечно подумала вначале ,что лучше считать строки в цикл и бегать взад вперед по нему, примерно получилось бы у меня как в правильном решении, но мы легких путей не ищем - решила считывать из файлов по одной строке и сразу их проверять, алгоритм замудренный, конечно, получился. Когда пройдет у меня ощущение, что меня эта задача выбесила, то попробую с этими функциями решить))))
0