#プログラムでやりたい事
クロスワードで出てきた文字を並び変えて、
名詞を見つける
例:
並び替え前の文字列:ティアースト
求めたい答え(名詞):アーティスト
#janomeをインポート 形態素解析(辞書を参照するため)
from janome.tokenizer import Tokenizer
#itertoolsをインポート 重複なしのあらゆる並びを取得用
import itertools
#初期化 ループに入る前に行う
t = Tokenizer()
#並び替え前の文字列をTextに代入
text = "ティアースト"
#文字列結合用の変数を初期化
str1=""
#permutationsで重複なしの数字の並びを取得
a = list(itertools.permutations([0,1, 2, 3, 4, 5]))
#aには[(0, 1, 2, 3, 4, 5), (0, 1, 2, 3, 5, 4),…]の様な
#形でデータが入る 今回は6文字の並びを調べるので0~5を指定
for i in range(len(a)):
#len(a)=720 組み合わせは6!で720通り
for token in t.tokenize(str1):
#初回以外 str1には6文字の文字が入る状態で形態素解析
part_of_speech = token.part_of_speech.split(',')[1]
#2個目の要素を取り出す
#ティアースト 名詞,固有名詞,組織,*,*,*,ティアースト,*,*
#アーティスト 名詞,一般,*,*,*,*,アーティスト,アーティスト,アーティスト
if part_of_speech == u'一般':
#2個目の要素が一般の物だけ取り出す
word = token.surface
if (len(word) == 6):
#「アート」等も拾ってしまうので、6文字拾えた物
#のみ出力する
print(word)
str1 = ""
#文字列結合用の変数を次のループに入る前に初期化
for j in range(len(a[i])):
#len(a[i])は6 ( (0, 1, 2, 3, 4, 5) )
str1 = str1 + text[(a[i][j])]
#文字列を足していき、6文字をくっつける
#step1:空白 + 1文字目 = テ
#step2:1文字目+2文字目 = ティ