@aassdds
Люблю борщ и PHP

Найти одинаковые элементы в строках матрицы?

Добрый день
Стоит такая задача
Есть Матрица (точно 4 строки, неизвестна длина столбцов)
Известно что как минимум одна строка будет не пустой, остальные могут быть пустыми

Нудно найти элементы, которые есть во всех СУЩЕСТВУЮЩИХ строках...
  • Вопрос задан
  • 1249 просмотров
Пригласить эксперта
Ответы на вопрос 2
angru
@angru
не знаю есть ли в php множества, но алгоритм прост: берется пересечение всех строк:

rows = [
    [1, 3, 4],
    [1, 2, 3, 5, 6],
    [1, 3, 5],
    [1, 3, 11]
]

res = set(rows[0])

for row in rows[1:]:
    res.intersection_update(row)


>>> {1, 3}
Ответ написан
Комментировать
@aassdds Автор вопроса
Люблю борщ и PHP
К сожалению не нашел ничего такого же красивого в пхп как в питоне (пост выше )
Но у меня вот что получилось, если кому интересно
$a = array(
            array(1,2,4,5,6,7),
            array(2,5,7,1),
            array(1,2),
            array(1,'a','g',2),
        );
        $res = array();
        for($i=0; $i<count($a[0]); $i++){
            $flag = 0;
            for($j=1; $j<count($a); $j++){
                for($k=0; $k<count($a[$j]); $k++){
                    if($a[0][$i] == $a[$j][$k]){
                        $flag ++ ;
                        if($flag == 3){ array_push($res, $a[0][$i]); }
                    }
                } // k
            } // j
        } // for i
        print_r($res);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы