Даны 2 текстовых файла. Верно ли, что они состоят из одних и тех же строк (но, возможно, строки идут в разном порядке)

Даны 2 текстовых файла. Верно ли, что они состоят из одних и тех же строк (но, возможно, строки идут в разном порядке).

Я не понял суть вопроса. Можете объяснить пример. Или любой язык программирования. Только без использования linq.


Ответы (2 шт):

Автор решения: Harry

Можно ли перестановкой строк получить из одного файла второй. Например

     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.~~~
→ Ссылка
Автор решения: Stanislav Volodarskiy

Читаем оба в файла в словари вида <строка>: <счётчик>. Если словари одинаковы то и наборы строк в файлах одинаковы:

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
→ Ссылка