練習問題
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from random import shuffle, choice
from itertools import count
from collections import defaultdict
try:
input = raw_input
except NameError:
pass
with(open(sys.argv[1], 'r')) as F:
dic = list(set(F.read().strip().split('\n')))
first_words = [ e[0] for e in dic ]
used = defaultdict(int)
players = [ 'あなた', 'わたし' ]
shuffle(players)
startswith = None
for i in count(1):
if players[i % len(players)] == 'あなた':
if startswith == None:
startswith = choice(first_words)
sys.stdout.write('{0:3}: あなたの番です。 "{1}": '.format(i, startswith))
s = input()
while not (s.startswith(startswith) and s in dic):
if not s.startswith(startswith):
print('"{0}"で始まっていません。 '.format(startswith))
else:
print('辞書にありません。')
sys.stdout.write('{0:3}: あなたの番です。 "{1}": '.format(i, startswith))
s = input()
if s in dic:
if s in used:
print('"{0}"は{1}回目に{2}が使用しています。わたしの勝ちです。'.format(s, used[s], players[used[s]%len(players)]))
break
startswith = s[-1]
used[s] = i
else:
msg = '{0:3}: わたしの番です。 '.format(i)
if startswith == None:
word = choice(dic)
startswith = word[-1]
used[word] = i
print(msg + '{0}'.format(word))
else:
words = [ e for e in dic if e.startswith(startswith) and e not in used ]
if len(words) == 0:
print('まいりました! あなたの勝ちです。')
break
else:
word = choice(words)
startswith = word[-1]
used[word] = i
print(msg + '{0}'.format(word))
print('今回のしりとりでは{0}個の単語を使用しました。'.format(len(used)))