7

Perl 6 の any(...) 演算子のシーケンスの例を見たことがあります。また、乗算を含むシーケンスを実行する方法を見つけようとしました。

演算子は次のことを行います。数字で始まる場合、それに続く数字のシーケンスを指定できます。

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

等々。フィボナッチ数 (この質問に示されています) のように、数列の前の数を使用して数列を定義することもできます。ここでは、次のようにします。

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

問題は、乗算演算子が*であり、前の数値も で表されること*です。

とを使用してシーケンスを定義できますが、 を使用してシーケンスを+定義する方法を見つけることができないようです。-/*

私は次のことを試しました:

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

しかし、明らかに機能しません。

誰もこれを行う方法を知っていますか?

4

2 に答える 2

14

一つには、Perl6は空白に敏感です。

1, 2, * * * ... *

完全に正当であり、乗法フィボナッチのようなシーケンスを生成します。少し読みづらいです。***何か違うことを* * *意味します。

あいまいさが気になる場合は、「星が何であれ」を使用することで得られる暗黙的なブロックの代わりに、明示的なブロックを使用できます。

1, 2, -> $a, $b { $a * $b } ... *

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

1, 2, * * * ... *どちらも(Rakudoでテストされた)と同じシーケンスを生成します。

于 2011-10-21T17:54:15.827 に答える
2
my @powers_of_two := { 1, 2, { $^a * 2 } ... *);

my $n = 6;
my @powers_of_six := { 1, $n, { $^a * $n } ... *);
于 2011-10-21T17:56:53.980 に答える