2013年12月1日日曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の9章(集合と辞書)、9.5(練習問題)、14-a, bをDartで解いてみる。

その他参考書籍

9.5(練習問題)、14-a, b.

コード

sample.dart

import 'dart:html';
import 'dart:math' as math;

void main() {
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element pre = querySelector('#pre0');
  run.onClick.listen((MouseEvent event){
    String result = '${window.navigator.userAgent}\n';
    new List(10).forEach((var elem){
      Map m1 = mkMap();
      Map m2 = mkMap();
      result += 'm1 = $m1\nm2 = $m2\n';
      result += 'sparseAdd: ${sparseAdd(m1, m2)}\n';
      result += 'sparseDot: ${sparseDot(m1, m2)}\n';
    });
    pre.text = result;
  });
  clear.onClick.listen((MouseEvent event) => pre.text = '');
}

Map sparseAdd(Map m1, Map m2){
  Map result = new Map.from(m1);
  m2.forEach((var k, var v){
    if (m1.containsKey(k)){
     result[k] += v; 
    } else {
      result[k] = v;
    }
  });
  return result;
}

num sparseDot(Map m1, Map m2){
  num result = 0;
  for (var k in m1.keys){
    if (m2.containsKey(k)){
      result = m1[k] * m2[k];
    }
  }
  return result;
}

math.Random random = new math.Random();

Map<num, num> mkMap(){
  Map<num, num> result = {};
  for(int n in new List(random.nextInt(5) + 1)){
    result[random.nextInt(10)] = random.nextInt(10) + 1;
  }
  return result;
}














						

0 コメント:

コメントを投稿