• ベストアンサー

python3 の演習問題

リストAの中にある文字列二つを組み合わせて、リストAの中にある単語を作れる組み合わせの数を表示するプログラムを作れと言われましたがわかりません、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1606/2337)
回答No.3

思ったよりは簡潔に書けました。 import itertools def sortStrEq(s, t): return (sorted(list(s)) == sorted(list(t))) if (len(s) == len(t)) else False def countStrCombination(lst): count = 0 for cmb in itertools.combinations(lst, 3): if (sortStrEq(cmb[0] + cmb[1], cmb[2]) or sortStrEq(cmb[0] + cmb[2], cmb[1]) or sortStrEq(cmb[1] + cmb[2], cmb[0])): count += 1 return count words = ["AA","BB","CC","ACAC","AABB"] print(countStrCombination(words))

str235
質問者

お礼

ありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • _kappe_
  • ベストアンサー率68% (1606/2337)
回答No.2

単純な文字列の連結だけでなく、"AA"と"CC"から"ACAC"を作るのもカウントしなければいけないのですか。確かにそれは少々面倒ですね。 自分なら、変数xとyに文字列を受け取って、xの中の文字の順番を入れ替えたらyと一致するかどうかを判定する関数を作るところから始めると思います。

すると、全ての回答が全文表示されます。
  • _kappe_
  • ベストアンサー率68% (1606/2337)
回答No.1

出題内容がよく分からないので、具体例を使うなどの方法でもう少し説明してもらえませんか。 たとえばリストAの内容が['x', 'y', 'xy', 'yx', 'xyx']だったら、3を表示する(x+y=xy, y+x=yx, x+yx=xyxの3通り)ということでしょうか。 また、課題の丸投げはあまり歓迎されません。書きかけでもいいのでプログラムを示した上で分からない部分を聞くほうが回答が付きやすいと思います。

str235
質問者

補足

例:リストA["AA","BB","CC","ACAC","AABB"] この場合回答者さんの言う通りACACとAABBの二通りになります

すると、全ての回答が全文表示されます。

関連するQ&A