知恵袋のアルファベットを並べる順列の問題をPythonで解いてみました。(^_^;
internetの文字があり、そのうちどのtも、どのeより左側にあるものは何通りあるか?
1番右側の't'が1番左側の'e'より左側にあればよいです。配列にrindex()メソッドが見つからなかったのでjoinで一度、文字列にしています。また、set(itertools.permutations())で同じものを含む順列を生成しています。
ちなみに、rubyとpythonでは、joinの配列(リスト)と区切り文字の順序が逆になってます。
Ruby | Python |
---|---|
arr.join("sep") | "sep".join(lst) |
● internet.py
# coding: UTF-8 # internet.py import itertools P = 'internet' c = 0 for p in set(itertools.permutations(P)): # 同じものを含む順列 s = ''.join(p) if s.rindex('t')< s.index('e'): c+=1 print(c)
●実行結果
840
※参考URL
●配列操作の比較表: Ruby, Python, JavaScript, Perl, C++
●文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++
●文字列の配列(リスト)を特定の文字列で連結するには (implode / join / mkString)
- 作者: 柴田淳
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/08/25
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (41件) を見る