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