Я пытался разработать следующий код, который в конечном итоге возвращает индексы массива чисел в списке с нечетными цифрами.
my @input_numbers = (1,2,4,8,16,32,64);
my @indices_of_odd_digit_sums = grep {
my $number = $input_numbers[$_];
my $sum;
$sum += $_ for split //, $number;
$sum % 2;
} 0..$#input_numbers;
print "@indices_of_odd_digit_sums";
Я думаю, сработало, что скрипт использует $input_numbers[$_]
, поскольку grep помещает индексы массива (0..6) в $_
Таким образом, $номеру присваивается фактическое значение элемента списка.
Я немного не уверен в том, что $_
в строке:
$sum += $_ for split //, $number;
Является ли $ _ теперь каждой цифрой в действительном числе?Таким образом, для 16 это сначала 1, а затем 6. Я не знаком с синтаксисом «для разделения».
Спасибо за любую предложенную помощь
Джон