開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Think Python (Allen B. Downey (著)、 O'Reilly Media)のChapter 9.(Case Study Word Play)のExercises 9-3(No. 1961)を取り組んでみる。
Exercises 9-3(No. 1961)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def avoids(word, forbidden_letters):
for letter in forbidden_letters:
if letter in word:
return False
return True
if __name__ == '__main__':
letters = [chr(letter) for letter in range(ord('a'), ord('z') + 1)]
# 5だと時間がかかったから 2 に変更
# (それでも時間がかかったからアルゴリズムの変更が必要かも。。)
forbidden_letters = [a + b
for a in letters
for b in letters
if a < b]
# for d in letters
# for e in letters
# if a < b < c < d < e]
print(len(forbidden_letters))
n = 0
combinations = set()
with open('words.txt') as f:
words = f.read().split()
print(len(words))
for letters in forbidden_letters:
count = 0
for word in words:
if avoids(word, letters):
count += 1
if count > n:
combinations = {letters}
n = count
elif count == n:
combinations.add(letters)
print(combinations, n)
入出力結果(Terminal, IPython)
$ ./sample3.py 325 113809 {'jq'} 110435 $
0 コメント:
コメントを投稿