誰もやってなかったようなので。。。
元ネタ: Javaで湯婆婆を実装してみる
コード
import 'dart:io';
import 'dart:math';
main() {
print("契約書だよ。そこに名前を書きな。");
// 標準入力を1行読み込む
var name = stdin.readLineSync().trim();
print("フン。${name}というのかい。贅沢な名だねぇ。");
// 名前を奪う
var random = new Random();
var newNameIndex = random.nextInt(name.length);
var newName = name.substring(newNameIndex, newNameIndex + 1);
print("今からお前の名前は${newName}だ。いいかい、${newName}だよ。分かったら返事をするんだ、${newName}!!");
}
実行結果
$ dart yubaba.dart
契約書だよ。そこに名前を書きな。
千尋
フン。千尋というのかい。贅沢な名だねぇ。
今からお前の名前は千だ。いいかい、千だよ。分かったら返事をするんだ、千!!
おまけ
空入力を与えると...?
契約書だよ。そこに名前を書きな。
フン。というのかい。贅沢な名だねぇ。
Unhandled exception:
RangeError (max): Must be positive and <= 2^32: Not in range 1..4294967296, inclusive: 0
#0 _Random.nextInt (dart:math-patch/math_patch.dart:230)
#1 main (file:///home/kogia-sima/PG/Dart/yubaba/yubaba.dart:14)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174)
Javaと同じくクラッシュしました。
感想
コードに冗長性がほとんど見られないのはDartの大きな強みの一つだと思う。