2014年10月20日月曜日

開発環境

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) 6.を解いてみる。

12.4(Exercises) 6.

コード(BBEdit)

sample6.py

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

def dutchFlag(colors):
    i = 0
    j = len(colors) - 1
    green = 0

    while i <= j:
        if colors[i] == 'red':
            colors[i], colors[green] = colors[green], colors[i]
            i += 1
            green += 1
        elif colors[i] == 'green':
            i += 1
        elif colors[i] == 'blue':
            colors[i], colors[j] = colors[j], colors[i]
            j -= 1
            
if __name__ == '__main__':
    import random
    
    for x in range(10):
        colors = (['red'] * random.randrange(5) +
                  ['green'] * random.randrange(5) +
                  ['blue'] * random.randrange(5))
        random.shuffle(colors)
        print(colors)
        dutchFlag(colors)
        print(colors, '\n')

入出力結果(Terminal, IPython)

$ ./sample6.py
['red', 'blue', 'green', 'blue', 'green', 'blue', 'blue']
['red', 'green', 'green', 'blue', 'blue', 'blue', 'blue'] 

['red', 'red', 'blue', 'blue', 'green', 'red', 'blue', 'green', 'green', 'green']
['red', 'red', 'red', 'green', 'green', 'green', 'green', 'blue', 'blue', 'blue'] 

['red', 'red', 'red', 'green', 'red', 'blue']
['red', 'red', 'red', 'red', 'green', 'blue'] 

['green', 'red', 'green', 'green', 'red', 'red', 'blue', 'red']
['red', 'red', 'red', 'red', 'green', 'green', 'green', 'blue'] 

['red', 'blue', 'green', 'red', 'blue', 'red', 'red', 'blue', 'green']
['red', 'red', 'red', 'red', 'green', 'green', 'blue', 'blue', 'blue'] 

['red', 'blue', 'green', 'green', 'red', 'red']
['red', 'red', 'red', 'green', 'green', 'blue'] 

['blue']
['blue'] 

['red', 'red', 'blue']
['red', 'red', 'blue'] 

['red', 'blue', 'red', 'blue', 'green', 'red', 'blue', 'red', 'blue']
['red', 'red', 'red', 'red', 'green', 'blue', 'blue', 'blue', 'blue'] 

['blue', 'green', 'green', 'green']
['green', 'green', 'green', 'blue'] 

$

0 コメント:

コメントを投稿