методы для отображения и уменьшения, чтобы получить взаимные пары - PullRequest
0 голосов
/ 27 февраля 2020

Файл содержит идентификаторы пользователей в формате

1 2
1 3
2 1
2 3
3 2

Каждый пользователь любит друг друга, если он взаимный. Выше я хочу вернуть пару 1,2 и 2,3. (1 лайков 2 и 2 лайков 1 et c.) Я написал псевдокод, но не уверен, работает ли он. Считает ли, подсчитывает ли пары независимо от того, 2,3 или 3,2? Может быть, есть лучший способ реализовать.

map (long k, string v) {
    string[] lines = parse v into lines; 
    for each line in lines:
        k1 = new Pair(line[0], line[1]); 
        long v1 = 1;
        output(k2, v2);
}

reduce (string k1, long[] v1) {   
    string k2 = k1;
    long v2 = 0;
    for each count in v2:
        v2 += count;
    if (v2 == 2) 
        output(k2, v2);
}
...