2013年12月20日金曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の12章(各種ツール)、12.7(練習問題)、12-16.をDartで解いてみる。

その他参考書籍

12.7(練習問題)、12-16.

コード

sample.dart

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

void main() {
  InputElement t0 = querySelector('#t0');
  InputElement input = querySelector('#f0');
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element pre = querySelector('#pre0');
  var random = new math.Random();
  run.onClick.listen((MouseEvent event){
    pre.text = '${window.navigator.userAgent}\n';
    var nums = new List.generate(10, (int index) => random.nextInt(100));
    pre.text += '$nums\n標準偏差: ${standartDeviation(nums)}\n';
    FileReader reader = new FileReader();
    try{
      File file = input.files.first;
      reader.readAsText(file);
      reader.onLoad.listen((Event event){
        pre.text += '${findLast(reader.result, t0.value)}\n';
      });
    }catch(e){
      pre.text += '$e\n';
    }
  });
  clear.onClick.listen((MouseEvent event) => pre.text = '');
}

findLast(String contents, String str){
  int line_no = 0;
  List line_no_and_line = [null, null];
  for(var line in contents.split('\n')){
    line_no += 1;
    if(line.contains(str)){
      line_no_and_line = [line_no, line];
    }
  }
  return line_no_and_line;
}

num standartDeviation(List<num> nums){
  num total = 0;
  for(var n in nums){
    total += n;
  }
  num average = total / nums.length;
  total += 0;
  for(var n in nums){
    total += math.pow(n - average, 2);
  }
  num variance = total / nums.length;
  return math.sqrt(variance);
}
















						

0 コメント:

コメントを投稿