開発環境
- OS X Lion - Apple(OS)
- Dart SDK (開発環境)
- Dart (プログラミング言語)
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の12章(新しいクラスのオブジェクト), 12.6(練習問題の続き)、バースデーヘルパーをDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
バースデーヘルパー
コード
sample.dart
import 'dart:io' as io; void main(){ var birth_dates = {}, filename = '../../birth_day_helper.txt', file = new io.File(filename), int_months = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}; file.readAsLines().then((List<String> lines){ for(var line in lines){ var splited_line = line.split(','), name = splited_line[0], month_day = splited_line[1], year = int.parse(splited_line[2]), splited_day_month = month_day.trim().split(new RegExp(r'\s+')), month = int_months[splited_day_month[0].trim()], day = int.parse(splited_day_month[1].trim()); birth_dates[name] = new DateTime(year, month, day); } }).then((e){ var td = new DateTime.now(), td_year = td.year, td_month = td.month, td_day = td.day; while(true){ var name = io.stdin.readLineSync(); if(name.isEmpty){ break; } if(birth_dates.containsKey(name)){ var birth_date = birth_dates[name], birth_year = birth_date.year, birth_month = birth_date.month, birth_day = birth_date.day, age = td_year - birth_year; if (birth_month > td_month || (birth_month == td_month && birth_day > td_day)){ age -= 1; } print('誕生日: ${birth_year}年${birth_month}月${birth_day}日 年齢: ${age}歳'); } else { print('${name}さんの誕生日は一覧にありません。'); } } }).catchError((e){ print(e); }); }
入出力結果
Christopher Pine 誕生日: 2000年10月21日 年齢: 13歳 Christopher Plummer 誕生日: 2000年10月22日 年齢: 13歳 Christopher Lloyd 誕生日: 2000年10月23日 年齢: 12歳 dart dartさんの誕生日は一覧にありません。
0 コメント:
コメントを投稿