Даны 2 текстовых файла. Верно ли, что они состоят из одних и тех же строк (но, возможно, строки идут в разном порядке)
Даны 2 текстовых файла. Верно ли, что они состоят из одних и тех же строк (но, возможно, строки идут в разном порядке).
Я не понял суть вопроса. Можете объяснить пример. Или любой язык программирования. Только без использования linq.
Ответы (2 шт):
Можно ли перестановкой строк получить из одного файла второй. Например
I II
Hello, world! To be or not to be?
I don't understand Hello, world!
To be or not to be? I don't understand
Вот пример — набор строк одинаков ("они состоят из одних и тех же строк, но, возможно, в разном порядке").
I II
Hello, world! To be!
I don't understand Hello, world!
To be or not to be? I don't understand
А вот тут - нет: Строки To be or not to be? нет во втором файле, To be! — в первом.
Проверить... Можно по-разному, но, пожалуй, лучше всего отсортировать строки одного файла и второго, и сравнивать по одной.
Конечно, как минимум, перед этим можно убедиться, что размеры файлов равны — иначе они a priori отличаются.
Я внятно пояснил суть задачи? Как именно сортировать — вопрос второй, зависит от размера файлов, например, от количества строк и т.д.
P.S. А, да! раз язык программирования любой... Командный интерпретатор Windows:
@echo off
sort %1 > %1.~~~
sort %2 > %2.~~~
fc %1.~~~ %2.~~~ > nul
if errorlevel 1 (
echo Fail
) else (
echo OK
)
del %1.~~~
del %2.~~~
Читаем оба в файла в словари вида <строка>: <счётчик>. Если словари одинаковы то и наборы строк в файлах одинаковы:
import collections
import sys
c1, c2 = (collections.Counter(open(fname)) for fname in sys.argv[1:])
sys.exit(0 if c1 == c2 else 1)
$ cat a.txt 0 1 2 $ cat b.txt 1 2 0 $ cat c.txt 0 2 3 $ python cmp.py a.txt b.txt && echo Yes || echo No Yes $ python cmp.py a.txt c.txt && echo Yes || echo No No