У меня возникает странный вопрос, который, несмотря на множество попыток, я не могу найти логику и правильный код проблемы.Сложный способ подсчета записей файла динамически
У меня есть файл в формате ниже:
aa:bb:cc dd:ee:ff 100 ---------->line1
aa:bb:cc dd:ee:ff 101 ---------->line2
dd:ee:ff aa:bb:cc 230 ---------->line3
dd:ee:ff aa:bb:cc 231 ---------->line4
dd:ee:ff aa:bb:cc 232 ---------->line5
aa:bb:cc dd:ee:ff 102 ---------->line6
aa:bb:cc dd:ee:ff 103 ---------->line7
aa:bb:cc dd:ee:ff 108 ---------->line8
dd:ee:ff aa:bb:cc 233 ---------->line9
gg:hh:ii jj:kk:ll 450 ---------->line10
jj:kk:ll gg:hh:ii 600 ---------->line11
Моя программа должна прочитать файл построчно. В первой строке и второй строке соответствующие значения столбца 1 и столбца2 равны. Третий столбец - это порядковый номер, который не является одинаковым для любых двух строк.
Так как строки1 и строка2 одинаковы, кроме того, их порядковые номера отличаются по значению только 1, я должен сначала прочитать эти две строки и записать их счет как 2 в выходной файл. Если мы заметим, строка 6 и строка 7 совпадают с строкой 1 и строкой 2, имеющей последовательные порядковые номера, но номера строк line3, line4, line5, имеющие разные столбцы 1 и столбцы 2, вошли между ними. Следовательно, линии (1 & 2) и линии (6 & 7) не следует группировать вместе. Итак, в выходном файле я должен получить результат как 2 3 2 1 1 1 1. И еще одно: строки 7 и 8 отличаются порядковым номером более 1. Следовательно, строка 8 следует считать отдельной записью , а не вместе с линиями 6 и 7, хотя линии 6,7,8 имеют одинаковые первые две колонки.
Я надеюсь, что большинство людей поняли вопрос. Если нет, я проясню что-нибудь по этому вопросу.
Как вы можете видеть, это очень сложная проблема. Я пробовал использовать словарь, поскольку это единственная структура данных, которую я знаю, но никакой логики не работает. Пожалуйста, помогите мне решить эту проблему.
Я не вижу вопроса где-нибудь – Stephan
@Stephan Вопрос в том, как я могу сгенерировать выходной файл, как я упомянул. –
@JustinCarrey Просто повторите свой вопрос, чтобы быть более явным. – 2rs2ts