2013年11月4日月曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の6章(条件分岐)、6.5(練習問題)、1から4をDartで解いてみる。

その他参考書籍

6.5(練習問題)、1から4。

コード

sample.dart

import 'dart:html';

void main() {
  querySelector("#run_dart").onClick.listen((MouseEvent event){
    var result = '1.\n',
        booleans = [];
    for(var a in [[true && !false, 'true'],
                  [true || true && false, 'true'],
                  [!true || !false, 'true'],
                  [52 < 52.3, 'true'],
                  [1 + 52 < 52.3, 'false'],
                  [4 != 4.0, 'false']]){
      result += '${a[0]} ${a[1]}\n';
    }
    result += '2. 2つ目の規則の反例 true && false\n';
    var a = true && false;
    result += '${a}\n';
    result += '3.\n';
    for(var x in [true, false]){
      for(var y in [true, false]){
        booleans.add([x, y]);
      }
    }
    result += 'a. 両方の変数がtrueならtrue\n';
    result += 'x && y\n';
    result += booleans.map(
        (a) => 'x = ${a[0]}, y = ${a[1]}: ${a[0] && a[1]}').join('\n');
    result += '\n';
    result += 'b. xがfalseならtrue, そうでなければfalse\n';
    result += '!x\n';
    result += booleans.map(
        (e) => 'x = ${e[0]}, y = ${e[0]} ${!e[0]}').join('\n');
    result += '\n';
    result += 'c. 少なくとも1つの変数がtrue\n';
    result += booleans.map(
        (e) => 'x = ${e[0]}, y = ${e[1]} ${e[0] || e[1]}').join('\n');
    result += '\n';
    result += '4. 排他的論理和\n';
    result += booleans.map(
        (e) => 'full = ${e[0]}, empty = ${e[1]} ${xor(e[0], e[1])}').join('\n');
    querySelector('#pre0').text = window.navigator.userAgent + '\n' + result;
  });
  querySelector('#clear').onClick.listen((MouseEvent event){
    querySelector('#pre0').text = '';
  });
}

bool xor(bool x, bool y){
  return (!x && y) || (x && !y);
}













						

0 コメント:

コメントを投稿