2013年12月1日日曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg 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 コメント:

コメントを投稿