Импорт класса из модуля, но функции не работают

Regexes - почти наверняка неправильный инструмент здесь. Вы хотите что-то, что связано с перестановками входного списка.

Это сообщение в блоге дает полезный обзор модулей Perl, связанных с перестановками и комбинациями. Звучит для меня как Алгоритм :: Комбинаторика будет хорошим местом для начала. Что-то вроде этого, возможно:

use Algorithm::Combinatorics;

my @input = qw[1 2 3 4 5 6 8 9 10];

my @perms = permutations(\@input);

Затем вам нужно каким-то образом сравнить допустимые перестановки с наборами, которые вы хотите протестировать. Я бы подумал о построении строкового представления множеств (путем объединения их с известным разделителем) и простого сравнения строк.

my @perm_strs = map { join ':' } @perms;

my @test = qw[2 4 3 1 10 5 9 8 6];
my $test_str = join ':', @test;

my $match = 0;
for (@perm_strs) {
  if ($test_str eq $_) {
    $match = 1;
    last;
  }
}

Успех совпадения теперь находится в $match.

0
задан Siddharth Joshi 19 January 2019 в 08:56
поделиться

1 ответ

Ваша проблема в том, что код вашего класса ATM требует данных, которые задаются как глобальные переменные в самом классе. С точки зрения ООП, это плохая практика, и в вашем конкретном случае код просто не будет работать, поскольку переменные выходят за рамки основного (виртуального врача).

Либо переместите эти переменные в сам класс (что все еще является плохой практикой), либо оставьте их в другом месте, импортируйте матрицу данных при вызове класса и передайте ее каждой отдельной функции.

Наконец, вы создаете экземпляр банка под названием b1 для использования в классе, который не имеет смысла с точки зрения ООП. Измените b1 на self, чтобы вызывать такие функции, как self.function (одна правка заменяет b1.pinpasscheck () на self.pinpasscheck ()).

0
ответ дан ZWang 19 January 2019 в 08:56
поделиться
Другие вопросы по тегам:

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