開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Python
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の10章(アルゴリズム)の10.4(練習問題)を解いてみる。
2.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- def getMin(sequence): res = (0, sequence[0]) for i in range(1, len(sequence)): if sequence[i] < res[1]: res = (i, sequence[i]) i += 1 return res def min_or_max_index(sequence, b): res = (0, sequence[0]) if b: for i in range(1, len(sequence)): if sequence[i] < res[1]: res = (i, sequence[i]) i += 1 else: for i in range(1, len(sequence)): if sequence[i] > res[1]: res = (i, sequence[i]) i += 1 return res if __name__ == '__main__': a = [1,2,3,4,5,0,1,2,3,4,5, 10, 9, 8, 7] print(getMin(a), min_or_max_index(a, True), min_or_max_index(a, False))
入出力結果(Terminal)
$ ./sample.py (5, 0) (5, 0) (11, 10) $
3.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- import nose def find_two_smallest(L): if not L: return None if len(L) == 1: return (0,) if L[0] < L[1]: min1, min2 = 0, 1 else: min2, min1 = 1, 0 for i in range(2, len(L)): if L[i] < L[min1]: min2 = min1 min1 = i elif L[i] < L[min2]: min2 = i return (min1, min2) def test_1(): assert find_two_smallest([]) == None def test_2(): assert find_two_smallest([1]) == (0,) def test_3(): assert find_two_smallest([1,2]) == (0, 1) def test_4(): assert find_two_smallest([5,4,3,2,1,1,2,3,4,5]) == (4, 5) def test_5(): assert find_two_smallest([10] * 1000) == (0, 1) if __name__ == '__main__': nose.runmodule()
入出力結果(Terminal)
$ ./sample.py ..... ---------------------------------------------------------------------- Ran 5 tests in 0.002s OK $
0 コメント:
コメントを投稿