読者です 読者をやめる 読者になる 読者になる

アナグラムをpythonで解析するgmkzスクリプト

python

最近寝れなくて夜が暇すぎるのでアナグラムを解析するスクリプトを考えてみました.本当は再帰関数書いてアナグラムの解答候補を全パターン生成する事が目的だったのにitertools使ってしまってるし本末転倒感すごい
結局 外部APIを鬼のように叩いて存在する単語のみを出力する迷惑なスクリプトが出来上がりました

#coding: UTF-8

from elementtree.ElementTree import * import urllib import itertools

def has_on_dic(word): url = "http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?word="+word+"&dic=EJdict&scope=HEADWORD&match=EXACT&merge=OR&prof=html&pageindex=0&pagesize=10" data = urllib.urlopen(url).read() elem = fromstring(data) for e in list(elem): if e.tag == "{http://btonic.est.co.jp/NetDic/NetDicV09}TotalHitCount": if int(e.text) > 0: return True else: return False

def get_word_by_numbers(word,numbers): converted_word = "" for i in numbers: converted_word += word[i] return converted_word

#main if name == 'main': search_word = raw_input() # please type word in 5 charactors proposed_word = [] for c in itertools.permutations(range(len(search_word))): anagramed_word = get_word_by_numbers(search_word,c) if has_on_dic(anagramed_word ): proposed_word.append(anagramed_word)

<span class="synIdentifier">print</span> search_word+<span class="synConstant">&quot; is guessed -&gt;&quot;</span>,
<span class="synStatement">for</span> word <span class="synStatement">in</span> proposed_word:
    <span class="synIdentifier">print</span> word,

実行結果

python anagram.py
ngyou
ngyou is guessed -> young

色々gmkzすぎて笑えないですが,これからちゃんとpython勉強してそれなりのコードかけるようになるつもりです.