開発環境
- 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(著)長尾 高弘(翻訳))の8章(ファイル処理)、8.8(練習問題)、4.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
8.8(練習問題)、4.
コード
sample.dart
import 'dart:html';
void main(){
var run = querySelector('#run'),
clear = querySelector('#clear'),
pre = querySelector('#pre0'),
reader = new FileReader();
InputElement input = querySelector('#f0');
input.accept = 'text/*';
run.onClick.listen((MouseEvent event){
var result = window.navigator.userAgent + '\n';
try {
File file = input.files[0];
reader.readAsText(file);
reader.onLoad.listen((Event event){
String text = reader.result;
result += '元のテキスト\n';
result += '$text\n';
try{
int smallest = readSmallestSkip(text.split('\n'));
result += '最小値: ${smallest}\n';
pre.text = result;
} catch (e){
result += e.toString();
pre.text = result;
}
});
} catch (e){
result += e.toString();
pre.text = result;
}
});
clear.onClick.listen((MouseEvent event) => pre.text = '');
}
List<String> skipHeader(List<String> lines){
lines.removeAt(0);
String line = lines.first;
while (line.startsWith('#')){
lines.removeAt(0);
line = lines.first;
}
return lines;
}
int readSmallestSkip(List<String> lines){
lines = skipHeader(lines);
lines = lines.map((String line) => line.trim()).toList();
if (lines.first == ''){
return 0;
}
RegExp pattern = new RegExp(r'^\d+$');
lines = lines.where((String line) => pattern.hasMatch(line)).toList();
if (lines.length == 0){
throw 'エラー: データが無い';
}
int smallest = int.parse(lines.first);
for (String line in lines.sublist(1)){
int value = int.parse(line);
if (value < smallest){
smallest = value;
}
}
return smallest;
}
0 コメント:
コメントを投稿