Я хочу найти эффективный способ (предпочтительно в Perl), чтобы узнать фиксированный порядок семейства слов, сравнивая их порядок в нескольких подмножествах группы.(Это параметры задания. Существует около 30 различных параметров. Разным заданиям нужны разные комбинации параметров, и в каждом задании есть только несколько параметров)
Например, задано:
first
second
third
sixth
seventh
tenth
first
third
fourth
fifth
sixth
third
fifth
seventh
eighth
ninth
tenth
Он должен иметь возможность запоминать относительные отношения порядка, которые он видит, чтобы понять, что порядок:
first
second
third
fourth
fifth
sixth
seventh
eighth
ninth
tenth
Я создал списки типа:
first.second.third.sixth.seventh.tenth
first.third.fourth.fifth.sixth
third.fifth.seventh.eighth.ninth.tenth
, затем отсортировал уникально +в алфавитном и визуальном плане сравнил их, но у меня есть сотни различных комбинаций 30-ти параметров, так что будет сложно разобрать их все и собрать вручную.
Я думаю, что @ daniel-tran ответил«как» в https://stackoverflow.com/a/48041943/224625 и использовании этого и некоторых хакерских атак вроде:
$order->{$prev}->{$this} = 1;
$order->{$this}->{$prev} = 0;
Мне удалось заполнить хэш хэшей 1 или 0 для каждой пары последовательных параметровсказать, что на первом месте, например:
$VAR1 = {
'first' => {
'second' => 1,
'third' => 1,
},
'second' => {
'first' => 0,
'third' => 1,
},
'third' => {
'first' => 0,
'second' => 0,
'fourth' => 1,
'fifth' => 1,
'sixth' => 1,
},
'fourth' => {
'third' => 0,
'fifth' => 1,
},
...
, но я ударился об стену, пытаясь понять, что делать в функции сортировки, когда его просят отсортировать пару, у которойr рассматривается как непосредственный сосед, поэтому отношения не определены.
Есть ли простое решение?Я иду об этом правильным путем?Есть ли лучший WTDI?
Спасибо,
Джон