開発環境
- 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(著)長尾 高弘(翻訳))の9章(集合と辞書)、9.5(練習問題)、13をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
9.5(練習問題)、13.
コード
sample.dart
import 'dart:html'; import 'dart:async' as async; void main() { InputElement input = querySelector('#f0'); InputElement run = querySelector('#run_dart'); InputElement clear = querySelector('#clear'); Element pre = querySelector('#pre0'); input.multiple = true; input.accept = 'text/*'; run.onClick.listen((MouseEvent event){ String result = '${window.navigator.userAgent}\n'; try{ List<File> files = input.files; ((){ var completer = new async.Completer(); int n = 0; List<String> strs = []; for(File file in files){ FileReader reader = new FileReader(); reader.readAsText(file); reader.onLoad.listen((Event event){ String s = reader.result; strs.addAll(s.split('\n')); n += 1; if (n == files.length){ completer.complete(strs); } }); } return completer.future; })().then((List<String> strs){ Map<int, List<String>> m = freqMap(countBirds(strs)); List<int> nums = m.keys.toList(); nums.sort((int n, int m) => n - m); nums.forEach((int n){ result += '$n\n'; m[n].forEach((String s) => result += ' $s\n'); }); pre.text = result; }); } catch(e){ result += '$e\n'; pre.text = result; } }); clear.onClick.listen((MouseEvent event) => pre.text = ''); } Map countBirds(List<String> strs){ Map<String, int> result = {}; for (String s in strs){ String t = s.trim(); if (t != ''){ if (result.containsKey(t)){ result[t] += 1; } else { result[t] = 1; } } } return result; } Map<int, List<String>> freqMap(Map<String, int> m){ Map<int, List<String>> result = {}; m.forEach((String s, int n){ if (result.containsKey(n)){ result[n].add(s); } else { result[n] = [s]; } }); return result; }
0 コメント:
コメントを投稿