decadence

個人のメモ帳

年俸1000万の問題

pythonで解いてみた

問題は以下の通り
ttp://alpha.cgios.net/alpha/cgios

4種類のアルファベット "A,C,G,T" から成るn文字の文字列のうち、"AAG"という並びが含まれる文字列を全て列挙するプログラムを書きなさい。ただし、nは3以上の整数とし、文字列内に同じアルファベットが出現しても構わないものとし、出力順序は問わないものとします。

... 適性検査に合格された方はその生産性を実現可能な方です。生産性に見合う初任給として年俸1000万円をご用意しております。

今回は用意された文字n個全ての組合せを作成し,それをfilterした

filterをlambdaを用いて綺麗に表せると嬉しい感じです
ついでにfilterと同様の形をリストの内包表記を用いて表しています.

ついでにn個の文字の全ての組合せを返す関数として2通り作成してみた
一つは関数無いで全ての組合せを作成するもの.
もう一つはgeneratorを返すもの

これを通してリストのfilterの強力さを,generatorと再帰を組み合わせる際どのようにすればいいのか,これらの事を学べた気がします.

ソースコードは以下のようになります.

  • 追記

itertools.product()とかいうのがあった…