2013年12月14日土曜日

開発環境

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

その他参考書籍

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

コード

sample.dart

import 'dart:html';

void main() {
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element pre = querySelector('#pre0');
  run.onClick.listen((MouseEvent event){
    pre.text = '${window.navigator.userAgent}\n';
    testLists.forEach((List s){
      try{
        if(isSorted(s[1]) == s[2]){
          pre.text += 'OK\n';
        } else {
          pre.text += '${s[0]}\n';
        }
      } catch (e){
        if(e.runtimeType == TypeError){
          pre.text = 'OK\n';
        } else {
          pre.text += '${s[0]}: ${e.runtimeType}\n';
        }
      }
    });
  });
  clear.onClick.listen((MouseEvent event) => pre.text = '');
}

bool isSorted(List<num> nums){
  var temp = nums.toList();
  temp.sort((num a, num b) => a - b);
  for(int i = 0; i < temp.length; i += 1){
    if(temp[i] != nums[i]){
      return false;
    }
  }
  return true;
}

List testLists = [['リストではない', 'dart', TypeError],
                  ['全て整数ではないリスト', [1, 'a'], TypeError],
                  ['空のリスト', [], true],
                  ['要素が1つのリスト', [10], true],
                  ['要素が2つのソート済リスト', [1, 2], true],
                  ['要素が2つの逆順リスト', [2, 1], false],
                  ['全て等しい要素のリスト', [10, 10], true],
                  ['先頭がソートされていないリスト', [10, 1, 2, 3, 4], false],
                  ['真ん中がソートされていないリスト', [1, 2, 5, 3, 4], false],
                  ['末尾がソートされていないリスト', [1, 2, 3, 4, 0], false]];


最初の2つがDartとdart2jsによるJavaScriptで出力結果が違った。

0 コメント:

コメントを投稿