ハノイの塔 テスト


#エントリーポイント
def hanoii(n):
if isinstance(n,(int)) and n>0:
return hanoii_main(1,2,3,n=n)
else:
raise Exception

assert hanoii(1) == [(1,2)]
assert hanoii(2) == [(1,3),(1,2),(3,2)]
assert hanoii(3) == [
(1,2),(1,3),(2,3),(1,2),(3,1),(3,2),(1,2)]
assert hanoii(4) == [
(1,3),(1,2),(3,2),(1,3),(2,1),(2,3),(1,3),
(1,2),
(3,2),(3,1),(2,1),(3,2),(1,3),(1,2),(3,2)]

#条件の境界テスト
assert hanoii_main.cmp({"n":1},hanoii_main.cases[0][0])
assert not all([hanoii_main.cmp({"n":i},hanoii_main.cases[0][0]) for i in [0,2,3,100]])

print ("hanoii done")