知恵袋のアルファベットを並べる順列の問題をPythonで解いてみた。

 知恵袋のアルファベットを並べる順列の問題Pythonで解いてみました。(^_^;

internetの文字があり、そのうちどのtも、どのeより左側にあるものは何通りあるか?

 1番右側の't'が1番左側の'e'より左側にあればよいです。配列にrindex()メソッドが見つからなかったのでjoinで一度、文字列にしています。また、set(itertools.permutations())で同じものを含む順列を生成しています。
 ちなみに、rubypythonでは、joinの配列(リスト)と区切り文字の順序が逆になってます。

RubyPython
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)

みんなのPython 第3版

みんなのPython 第3版