Perl найти нечетное нечетное число в аргументе - PullRequest
0 голосов
/ 08 ноября 2018

Пример:

./odd.pl a a b b b

выход:

b b b

найдите аргумент нечетного числа и выведите

Я пытался:

my %count;
foreach $arg (@ARGV) {
    $count{$arg}++;
    if ($count{$arg} % 2 eq 1) { print "$arg"; }
}

print "\n";

1 Ответ

0 голосов
/ 08 ноября 2018

Похоже, вы хотите напечатать значения, которые появляются нечетное количество раз.

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

Решение:

my %counts;
for my $arg (@ARGV) {
    ++$counts{$arg};
}

my @matches;
for my $arg (@ARGV) {
    if ($counts{$arg} % 2 == 1) {
        push @matches, $arg;
    }
}

print("@matches\n");

Обратите внимание, что я изменил eq на ==, потому что eq для сравнения строк.

Упрощенное решение:

my %counts;
++$counts{$_} for @ARGV;
my @matches = grep { $counts{$_} % 2 } @ARGV;
print("@matches\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...