開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の9章(集合と辞書)、9.5(練習問題)、14-a, b.を解いてみる。
9.5(練習問題)、14-a, b.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
import random
def sparseAdd(d1, d2):
result = d1.copy()
for k, v in d2.items():
if k in result:
result[k] += v
else:
result[k] = v
return result
def sparseDot(d1, d2):
result = 0
for k in d1.keys():
if k in d2:
result += d1[k] * d2[k]
return result
def mkDict():
result = {}
for l in range(random.randint(1, 5)):
result[random.randint(1, 10)] = random.randint(1, 10)
return result
for i in range(10):
d1 = mkDict()
d2 = mkDict()
print('d1 = {0}\nd2 = {1}'.format(d1, d2))
print('sparseAdd: {}'.format(sparseAdd(d1, d2)))
print('sparseDot: {}'.format(sparseDot(d1, d2)))
入出力結果(Terminal)
$ ./sample.py
d1 = {9: 8}
d2 = {5: 1}
sparseAdd: {9: 8, 5: 1}
sparseDot: 0
d1 = {1: 5, 2: 6, 3: 7, 7: 5}
d2 = {3: 4}
sparseAdd: {1: 5, 2: 6, 3: 11, 7: 5}
sparseDot: 28
d1 = {10: 10, 2: 6}
d2 = {3: 6, 4: 1, 5: 1, 7: 5}
sparseAdd: {2: 6, 3: 6, 4: 1, 5: 1, 7: 5, 10: 10}
sparseDot: 0
d1 = {4: 6, 7: 9}
d2 = {7: 8}
sparseAdd: {4: 6, 7: 17}
sparseDot: 72
d1 = {8: 2, 1: 1, 2: 4, 6: 1, 9: 1}
d2 = {9: 10}
sparseAdd: {8: 2, 1: 1, 2: 4, 6: 1, 9: 11}
sparseDot: 10
d1 = {7: 6}
d2 = {3: 2, 6: 6, 7: 1}
sparseAdd: {3: 2, 6: 6, 7: 7}
sparseDot: 6
d1 = {8: 9, 3: 7}
d2 = {10: 1, 4: 3}
sparseAdd: {8: 9, 10: 1, 3: 7, 4: 3}
sparseDot: 0
d1 = {9: 1, 2: 2, 4: 9}
d2 = {1: 7, 2: 4, 3: 2, 5: 9}
sparseAdd: {1: 7, 2: 6, 3: 2, 4: 9, 5: 9, 9: 1}
sparseDot: 8
d1 = {8: 7, 1: 7, 4: 4, 6: 7}
d2 = {9: 8, 10: 9}
sparseAdd: {1: 7, 4: 4, 6: 7, 8: 7, 9: 8, 10: 9}
sparseDot: 0
d1 = {3: 1, 6: 8, 7: 7}
d2 = {5: 3}
sparseAdd: {3: 1, 5: 3, 6: 8, 7: 7}
sparseDot: 0
$
0 コメント:
コメントを投稿