def deal(n, deck):
'''
>>> deal(3, '123123123')
('111', '222', '333')
>>> deal(4, '123123123')
('12', '23', '31', '12')
>>> deal(6, "012345012345012345")
('000', '111', '222', '333', '444', '555')
>>> deal(4, "111122223333")
('123', '123', '123', '123')
>>> deal(1, "012345012345012345")
('012345012345012345',)
>>> deal(6, "01234")
('', '', '', '', '', '')
>>> deal(2, "")
('', '')
>>> deal(0, "")
()
'''
if n < 1:
return ()
if len(deck) < n:
return ('',) * n
xs = deck[:n]
ys = deal(n, deck[n:])
return tuple((xs[i] + ys[i] for i in range(n)))
if __name__ == '__main__':
import doctest
doctest.testmod()
2009年5月9日土曜日
簡単らしい
超簡単な問題を朝食後にやってみた。13:39。。。遅い!!しかもpythonというよりlisperが好みそうな答えだ。しかしtest caseの書き間違いとn==0のケースで時間を無駄にした。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿