List::Gen
私は、Perl にもたらされた関数型プログラミングのパラダイムが大好きです。リストの長さはアプリオリにわからないため、少し難しいですが、それを使用して Collatz シーケンスを作成することは可能です。
1
次のコードでは、シーケンスの最後に最後の行がありません。
use List::Gen '*';
iterate{ $_%2 ? 3*$_+1 : $_/2 }->from( 23 )->while( '!=1' )->say;
これは次を印刷します:
23 70 35 106 53 160 80 40 20 10 5 16 8 4 2
このアプローチで本質的に必要なのはdo-while
. while_
ドキュメントでは、 の「先読み」バージョンであるについて言及してwhile
いますが、インタープリターはそのようなメソッドを見つけることができません。