開発環境
- 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-19.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
12.7(練習問題)、12-19.
コード
sample.dart
import 'dart:html';
void main() {
InputElement input = querySelector('#f0');
InputElement run = querySelector('#run_dart');
InputElement clear = querySelector('#clear');
Element pre = querySelector('#pre0');
RegExp pattern = new RegExp(r'\s+');
run.onClick.listen((MouseEvent event){
pre.text = '${window.navigator.userAgent}\n';
try{
File file = input.files.first;
FileReader reader = new FileReader();
reader.readAsText(file);
reader.onLoad.listen((Event event){
try{
String contents = reader.result;
var lines = contents.split('\n');
var first = lines.first;
var first_words = first.split(pattern).map(
(String s) => s.trim()).toList();
if(first_words.first != 'COMPND'){
throw 'COMPNDが欠けている';
}
var molecule = [first_words[1]];
var i = 1;
for(String line in lines.sublist(1)){
if(line.startsWith('END')){
break;
}
var words = line.split(pattern);
if(words.length != 6){
throw 'データが欠けている';
}
if(words[0] != 'ATOM'){
throw 'ATOMが見つからない';
}
if(words[1] != '$i'){
throw 'IDが不正';
}
if(!(new RegExp(r'^\w+$')).hasMatch(words[2])){
throw '原子記号が不正';
}
for(var n in words.sublist(3)){
if(!(new RegExp(r'^(-)?\d+(.\d+)?$')).hasMatch(n)){
throw '座標が不正';
}
}
molecule.add(words);
i += 1;
}
pre.text += molecule.toString();
} catch(e){
pre.text += '$e';
}
});
}catch(e){
pre.text += '$e\n';
}
});
clear.onClick.listen((MouseEvent event) => pre.text = '');
}
0 コメント:
コメントを投稿