У меня есть куча данных регрессионного теста. Каждый тест - это просто список сообщений (ассоциативных массивов), сопоставляющий имена полей сообщений со значениями. В этих данных много повторений.
Например
test1 = [
{ sender => 'client', msg => '123', arg => '900', foo => 'bar', ... },
{ sender => 'server', msg => '456', arg => '800', foo => 'bar', ... },
{ sender => 'client', msg => '789', arg => '900', foo => 'bar', ... },
]
Я хотел бы представить данные поля (как дерево решений минимальной глубины?), Чтобы каждое сообщение могло быть программно восстановлено с использованием минимального количества параметров. Например, в приведенном выше
- foo всегда 'bar', поэтому мне не нужно упоминать об этом
- отправитель и клиент взаимосвязаны, поэтому мне нужно упомянуть только одну или другую
- и MSG каждый раз разные
Так что я хотел бы иметь возможность восстановить эти сообщения с помощью программы, аналогичной
write_msg( 'client', '123' )
write_msg( 'server', '456' )
write_msg( 'client', '789' )
где функция write_msg будет состоять из вложенных выражений или вызовов подфункций с использованием параметров.
На основании моих исходных данных, как я могу определить «самый важный» набор параметров, то есть те, которые позволят мне воссоздать мой набор данных, используя наименьшее количество аргументов?