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