Умножение с помощью оператора Perl 6 Sequence Wh независимо (...) - PullRequest
7 голосов
/ 21 октября 2011

Я видел примеры оператора Perl 6 независимо от (...) в последовательностях, и я попытался выяснить, как сделать последовательность, которая включает умножения.

Оператор делает следующее, есликаждый начинается с нескольких чисел, можно указать последовательность чисел, следующих за ним.

@natural = 1,2 ... *;
@powersOfTwo = 1,2,4 ... *;

и так далее.Можно также определить последовательность, используя предыдущие числа в последовательности, как в числах Фибоначчи (показано в этом вопросе ), где выполняется следующее:

@fibonacci = 1,1, *+* ... *;

Проблема заключается в том, чтооператор умножения - *, а предыдущие числа также представлены *.

Хотя я могу определить последовательность, используя +, - и /, я не могу найти способ определения последовательности, используя *.

У меня естьпопробовал следующее:

@powers = 1,2, *** ... *;

но оно явно не работает.

Кто-нибудь знает как это сделать?

Ответы [ 2 ]

13 голосов
/ 21 октября 2011

Во-первых, Perl 6 чувствителен к пробелам.

1, 2, * * * ... *

совершенно легитимен и генерирует последовательность, подобную мультипликативному Фибоначчи;это просто немного трудно читать.*** и * * * означают что-то другое.

Если неоднозначность вас беспокоит, вы можете использовать явный блок вместо неявного, который дает вам «любую звезду»:1010 * и

1, 2, { $^a * $^b } ... *

оба производят ту же последовательность, что и 1, 2, * * * ... * (проверено в Rakudo).

2 голосов
/ 21 октября 2011
my @powers_of_two := { 1, 2, { $^a * 2 } ... *);

my $n = 6;
my @powers_of_six := { 1, $n, { $^a * $n } ... *);
...