2014年10月16日木曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 12(Designing Algorithms)、12.4(Exercises) 2-a, b, c.を解いてみる。

12.4(Exercises) 2-a, b, c.

コード(BBEdit)

sample2.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

# a, b.
def minIndex(l):
    '''
    >>> minIndex([9, 0, 8, 1, 7, 2, 7, 3, 5])
    (0, 1)
    '''
    i = 0
    v = l[0]
    for x in range(1, len(l)):
        if l[x] < v:
            i = x
            v = l[x]
    return (v, i)

def minOrMaxIndex(l, flag=True):
    '''
    >>> minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5])
    (0, 1)
    >>> minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5], flag=True)
    (0, 1)
    >>> minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5], flag=False)
    (9, 0)
    '''
    if flag:
       return  minIndex(l)
    i = 0
    v = l[0]
    for x in range(1, len(l)):
        if l[x] > v:
            i = x
            v = l[x]
    return (v, i)

if __name__ == '__main__':
    import doctest
    doctest.testmod()

    import random
    l = [random.randrange(100) for x in range(10)]
    print('{0}: {1}, {2}'.format(
        l, minOrMaxIndex(l), minOrMaxIndex(l, flag=False)))

入出力結果(Terminal, IPython)

$ ./sample2.py -v
Trying:
    minIndex([9, 0, 8, 1, 7, 2, 7, 3, 5])
Expecting:
    (0, 1)
ok
Trying:
    minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5])
Expecting:
    (0, 1)
ok
Trying:
    minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5], flag=True)
Expecting:
    (0, 1)
ok
Trying:
    minOrMaxIndex([9, 0, 8, 1, 7, 2, 7, 3, 5], flag=False)
Expecting:
    (9, 0)
ok
1 items had no tests:
    __main__
2 items passed all tests:
   1 tests in __main__.minIndex
   3 tests in __main__.minOrMaxIndex
4 tests in 3 items.
4 passed and 0 failed.
Test passed.
[46, 79, 2, 38, 84, 64, 55, 87, 57, 13]: (2, 2), (87, 7)
$

0 コメント:

コメントを投稿