私は(Pythonで)次の必要があります再帰的生成+フィルタリング。より良い非再帰的?
- は(よりかもしれない)長さ12のすべての可能な組を生成
- (基本的に12桁と三元数)が0、1又は2のいずれかを含みますこれらのタプルを特定の基準に従ってフィルタリングし、不適切なものを削除し、必要なものを保持します。
これまでのところ、小さな長さに対処しなければならなかったので、機能的アプローチはきちんと単純でした。再帰関数はすべての可能なタプルを生成し、フィルタ関数でそれらを取り除きます。私はより大きなセットを持っているので、生成ステップは、ソリューションツリーのほとんどのパスが後で取り除かれるので、必要以上に長い時間がかかりすぎて、作成をスキップできます。ループ内に生成derecurse
- 、各新しい12桁エンティティ
- にフィルタ基準を適用する再帰アルゴリズムでフィルタリングを統合する、のように:
私はこれを解決するには、2つのソリューションを持っていますそれがすでに運命にある道に足を踏み入れることを防ぎなさい。
私の好みは1になりますが、私はあなたの意見を聞きたいと思います。特に、関数型プログラミングスタイルがそのようなケースをどのように扱うかに目を向けたいと思います。 myfilter
が選択を行い
素敵なソリューションが、私は –
アップデートが行わpy2.6に更新する必要があります.... –
一行のリスト内包: 結果= [itertools.product中のxのためのx(範囲は(3)、= 12を繰り返します) if myfilter(x)] – hughdbrown