開発環境
- 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 コメント:
コメントを投稿