Practical Programming
An Introduction to Computer Science
Using Python 3
(Pragmatic Programmers)
(Pragmatic Bookshelf)
Paul Gries (著) Jennifer Campbell (著)
Jason Montojo (著) Lynn Beighley (編集)
開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python 3.4 (プログラミング言語)
Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 11(Storing Data Using Other Collection Types)、11.8(Exercises) 11-a, b, c.を解いてみる。
11.8(Exercises) 11-a, b, c.
コード(BBEdit)
sample11.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- # a. def sparseAdd(v1, v2): result = {} s1 = set(v1.keys()) s2 = set(v2.keys()) for k in s1.intersection(s2): result[k] = v1[k] + v2[k] for k in s1.symmetric_difference(s2): if k in s1: result[k] = v1[k] else: result[k] = v2[k] return result # b. def sparseDot(v1, v2): result = 0 s1 = set(v1.keys()) s2 = set(v2.keys()) for k in s1.intersection(s2): result += v1[k] * v2[k] return result if __name__ == '__main__': d1 = {0:1, 1:2, 2:3} d2 = {0:4, 1:5, 2:6} d3 = {0:5, 1:7, 2:9} d4 = {0:1, 6:3} dicts = [d1, d2, d3, d4] for x in dicts: for y in dicts: print('vector1={0}, vector2={1}'.format(x, y)) print('vector1 + vector2 = {0}'.format(sparseAdd(x, y))) print('vector1・vector2 = {0}'.format(sparseDot(x, y)))
入出力結果(Terminal, IPython)
$ ./sample11.py vector1={0: 1, 1: 2, 2: 3}, vector2={0: 1, 1: 2, 2: 3} vector1 + vector2 = {0: 2, 1: 4, 2: 6} vector1・vector2 = 14 vector1={0: 1, 1: 2, 2: 3}, vector2={0: 4, 1: 5, 2: 6} vector1 + vector2 = {0: 5, 1: 7, 2: 9} vector1・vector2 = 32 vector1={0: 1, 1: 2, 2: 3}, vector2={0: 5, 1: 7, 2: 9} vector1 + vector2 = {0: 6, 1: 9, 2: 12} vector1・vector2 = 46 vector1={0: 1, 1: 2, 2: 3}, vector2={0: 1, 6: 3} vector1 + vector2 = {0: 2, 1: 2, 2: 3, 6: 3} vector1・vector2 = 1 vector1={0: 4, 1: 5, 2: 6}, vector2={0: 1, 1: 2, 2: 3} vector1 + vector2 = {0: 5, 1: 7, 2: 9} vector1・vector2 = 32 vector1={0: 4, 1: 5, 2: 6}, vector2={0: 4, 1: 5, 2: 6} vector1 + vector2 = {0: 8, 1: 10, 2: 12} vector1・vector2 = 77 vector1={0: 4, 1: 5, 2: 6}, vector2={0: 5, 1: 7, 2: 9} vector1 + vector2 = {0: 9, 1: 12, 2: 15} vector1・vector2 = 109 vector1={0: 4, 1: 5, 2: 6}, vector2={0: 1, 6: 3} vector1 + vector2 = {0: 5, 1: 5, 2: 6, 6: 3} vector1・vector2 = 4 vector1={0: 5, 1: 7, 2: 9}, vector2={0: 1, 1: 2, 2: 3} vector1 + vector2 = {0: 6, 1: 9, 2: 12} vector1・vector2 = 46 vector1={0: 5, 1: 7, 2: 9}, vector2={0: 4, 1: 5, 2: 6} vector1 + vector2 = {0: 9, 1: 12, 2: 15} vector1・vector2 = 109 vector1={0: 5, 1: 7, 2: 9}, vector2={0: 5, 1: 7, 2: 9} vector1 + vector2 = {0: 10, 1: 14, 2: 18} vector1・vector2 = 155 vector1={0: 5, 1: 7, 2: 9}, vector2={0: 1, 6: 3} vector1 + vector2 = {0: 6, 1: 7, 2: 9, 6: 3} vector1・vector2 = 5 vector1={0: 1, 6: 3}, vector2={0: 1, 1: 2, 2: 3} vector1 + vector2 = {0: 2, 1: 2, 2: 3, 6: 3} vector1・vector2 = 1 vector1={0: 1, 6: 3}, vector2={0: 4, 1: 5, 2: 6} vector1 + vector2 = {0: 5, 1: 5, 2: 6, 6: 3} vector1・vector2 = 4 vector1={0: 1, 6: 3}, vector2={0: 5, 1: 7, 2: 9} vector1 + vector2 = {0: 6, 1: 7, 2: 9, 6: 3} vector1・vector2 = 5 vector1={0: 1, 6: 3}, vector2={0: 1, 6: 3} vector1 + vector2 = {0: 2, 6: 6} vector1・vector2 = 10 $
0 コメント:
コメントを投稿