2014-01-10 5 views
0

Я хочу, чтобы сравнить несколько строк, как эторазница между 2 строки

Previous -> Present 

Что-то вроде

path 1 : 100 -> 112 --> 333 --> 500 
path 2 : 100 -> 333 --> 500 
path 3 : 100 -> 333 --> 500 --> 500 
path 4 : 100 -> 112 --> 500 

Мне нужно сравнить path 1 с path 2, получить номер, который был в path 1, который не делает существует в path 2 и хранить его в базе данных

Затем сравните path 2 с path 3 и делать то же самое. Если он уже существует, то увеличивайте его. В противном случае вставьте новый номер.

Я знаю, как вставлять в базу данных и увеличивать, если запись существует. То, что я не знаю, - это как пройти через все эти пути, получая эти значения, а затем решить, следует ли вставлять их в базу данных.

Я провел некоторое исследование, и я слышал об Levenshtein Edit Distance, но я не могу понять, как я должен это делать.

+1

Пожалуйста, напишите окончательный результат, который вы ожидаете. – ThisSuitIsBlackNot

+0

Что делать, если путь 2 был «100 -> 112 -> 400 -> 500'. Это возможно? – ikegami

+0

Я изменил ваш вопрос, чтобы он был более читабельным. Убедитесь, что это правильно. – Borodin

ответ

1

Ваш вопрос, как представляется:

Учитывая два списка чисел, как я могу сказать, какие из них в списке А не находятся в списке B?

Хеши полезны для выполнения арифметических операций.

my @a = (100, 112, 333, 500); 
my @b = (100, 333, 500); 

my %b = map { $_ => 1 } @b; 
my @missing = grep { !$b{$_} } @a; 
+0

Это делает именно то, что мне нужно :) Спасибо ikegami! –

Смежные вопросы