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