Матрицы матриц в Perl

i наконец заметили, что ваш сплат определен до , любое значение присваивается $ Attachment. [ blush ] означает, что в значке сплат НЕ будет ничего с этим параметром.

исправление = переместить знак в стандартное местоположение - непосредственно перед вызовом, который его использует - и, следовательно, после присвоения всех $ Vars, которые он использует , [ ухмылка ]

9
задан 3 March 2009 в 22:04
поделиться

2 ответа

Прокрутка Ваше собственное не является слишком болезненной.

use List::Util qw(max);

@A = ([1, 2], [3, 4]);
@B = ([5, 6], [7, 8]);
@C = ([9, 10], [11, 12]);
@D = ([13, 14], [15, 16]);

sub hmerge(\@\@;\@\@\@\@\@\@) {
    my @ret;
    for my $i (0 .. max map $#$_, @_) {
        push @ret, [map @{$$_[$i]}, @_];
    }
    @ret;
}

@E = (hmerge(@A, @B), hmerge(@C, @D));
5
ответ дан 5 December 2019 в 01:19
поделиться

Править

Я неправильно понял OP, думая, что они хотели выполнить итерации по всем возможным перестановкам нескольких матриц (который является что Итератор:: Массив:: Зубчатый делает).


Смотрите на Итератор:: Массив:: Зубчатый

Вот пример из резюме:

use Iterator::Array::Jagged;

# Build up a set of data:
my @data = (
  [qw/ a b /],
  [qw/ c d /],
  [qw/ e f g /]
);

# Iterator is a subref:
my $itersub = Iterator::Array::Jagged->get_iterator( @data );
while( my @set = $itersub->() )
{
  print "Next set: '" . join("&", @set) . "'\n";
}# end while()

Пример в коде выше кода печатает следующее:

Next set: 'a&c&e'
Next set: 'b&c&e'
Next set: 'a&d&e'
Next set: 'b&d&e'
Next set: 'a&c&f'
Next set: 'b&c&f'
Next set: 'a&d&f'
Next set: 'b&d&f'
Next set: 'a&c&g'
Next set: 'b&c&g'
Next set: 'a&d&g'
Next set: 'b&d&g'
-1
ответ дан 5 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: