ФорумПрограммированиеPHP для идиотов → Транспонирование матрицы

Транспонирование матрицы

  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 4:56

    Есть в PHP функция транспонирования матриц?
    Не могу  в мануале найти ничего подобного…
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 2 августа 2009 г. 5:00, спустя 4 минуты 5 секунд

    Ыы, у меня в экзамене по информатике было такое задание :) Написал на пхп, но вот про отдельную функцию не слышал никогда.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 2 августа 2009 г. 5:04, спустя 4 минуты 25 секунд


    Есть в PHP функция транспонирования матриц?
    Не могу  в мануале найти ничего подобного…
    а зачем оно в вебе? ….
    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 5:05, спустя 46 секунд

    Матрица есть =)
    Надо с ней поработать :)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 2 августа 2009 г. 5:06, спустя 34 секунды


    Матрица есть =)
    Надо с ней поработать :)
    двумя форамми вроде не проблема транспонировать)
    Сапожник без сапог
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 5:12, спустя 6 минут 24 секунды

    Да это понятно - костыль.
    Хочу быстрее :)
    Спустя 98 сек.
    2889x20 размерность. Может быть и больше…
    Спустя 126 сек.
    + почти к каждому элементу надо регулярку применить…
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 2 августа 2009 г. 5:14, спустя 1 минуту 59 секунд


    Да это понятно - костыль.
    Хочу быстрее :)
    Спустя 98 сек.
    2889x20 размерность. Может быть и больше…
    Спустя 126 сек.
    + почти к каждому элементу надо регулярку применить…
    Что же у тебя в этом массиве то…
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 5:16, спустя 1 минуту 39 секунд

    Внутренний формат одной программы :)
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 2 августа 2009 г. 5:18, спустя 1 минуту 56 секунд


    Внутренний формат одной программы :)
    Жость… я кроме форов ничего не могу предложить :) А с форами скорее всего долговато будет делать… наверное за это мне поставили не 5 баллов за задание это а 4 )))
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 5:20, спустя 2 минуты 6 секунд

    Ладно, пойду на каде решать…
    в маткаде есть регулярки? =)
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 августа 2009 г. 6:26, спустя 1 час 6 минут 27 секунд

    function trans2(array $matrix)
    {
       $last = sizeof($matrix) - 1;
       eval('$result = array_map(null, $matrix['
           . implode('], $matrix[', range(0, $last)) . ']);');
       return $result;
    }


    для матрицы 30000x20 работает ~ 0,57-0.59 с
    Обычное копирование в цикле работает примерно 0.79-0.8 с (при такой же размерности)

    Вообще, обязательно ли транспонировать? Можно просто при обращении к элементу менять местами индексы и всё
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 6:42, спустя 16 минут 11 секунд

    Спасибо за код.
    Изврат не проканает - надо будет использовать цикл (а этого и хотел избежать), а без него в регулярку не засунешь.

    Эм, чето я не совсем догнал как работает =)
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 августа 2009 г. 7:03, спустя 20 минут 17 секунд

    магия
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 2 августа 2009 г. 7:05, спустя 2 минуты 2 секунды

    Спасибо, разобрался.
    Мозги ;)
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 августа 2009 г. 7:22, спустя 17 минут 21 секунду

    Изврат не проканает - надо будет использовать цикл (а этого и хотел избежать), а без него в регулярку не засунешь.
    в смысле "цикл"? Batler, объясни, что ты вообще хочешь сделать, возможно найдутся варианты.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!