開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の12章(各種ツール)、12.7(練習問題)、12-17.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
12.7(練習問題)、12-17.
コード
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';
pre.text += '$l1\n平均値: ${mean(l1)}\n$l2\n';
try{
mean(l2);
}catch(e){
pre.text += '$e\n';
}
pre.text += '$l3\n中央値: ${median(l3)}\n' +
'$l4\n中央値: ${median(l4)}\n' +
'$l5\n最頻値: ${mode(l5)}\n';
});
clear.onClick.listen((MouseEvent event) => pre.text = '');
}
num mean(Iterable nums){
num total = 0;
for(var n in nums){
if(n.runtimeType != double && n.runtimeType != int){
throw '数値以外の要素が含まれている。';
}
total += n;
}
return total / nums.length;
}
num median(Iterable<num> nums){
var l = nums.length;
if(l == 0){
return null;
}
List<num> new_nums = nums.toList();
new_nums.sort((num a, num b) => a - b);
int n = l ~/2;
if(l % 2 == 0){
return (new_nums[n - 1] + new_nums[n]) / 2;
}
return new_nums[n];
}
List<num> mode(Iterable nums){
List<num> result = [];
Map<int, num> n_c = {};
for(var n in nums){
n_c[n] = n_c.containsKey(n) ? n_c[n] + 1: 1;
}
var cs = n_c.values;
int m = n_c.values.fold(cs.first,
(int prev, int next) => prev < next ? next : prev);
for(var n in n_c.keys){
if (n_c[n] == m){
result.add(n);
}
}
return result;
}
var l1 = new List.generate(10, (int index) => index + 1);
var l2 = [1, 'dart', 2];
var l3 = [5, 1, 4, 2, 3];
var l4 = [5, 1, 4, 2, 3, 6];
var l5 = [0, 1, 0, 3, 2, 4, 1];
0 コメント:
コメントを投稿