開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dart (プログラミング言語)
『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリージャパン、2009年、ISBN978-4-87311-425-5) の5章(関数)、練習問第5-1、5-2をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問第5-1、5-2
コード
sample.dart
import 'dart:html'; void main(){ var run = querySelector('#run'), clear = querySelector('#clear'), pre0 = querySelector('#pre0'), t0 = querySelector('#t0'), t1 = querySelector('#t1'); run.onClick.listen((MouseEvent event){ var result = window.navigator.userAgent + '\n', n = int.parse(t0.value), m = new List.generate(n, (int index) => index + 1).fold( 1, (prev, element) => prev * element), nums = t1.value.split(',').map((e) => int.parse(e)), wagos = convertNumberToWago(nums); result += '再帰: $n! = ${calcFactorialRecursively(n)}\n' + 'for loop: $n! = ${calcFactorialWithLoop(n)}\n' + 'fold: $n! = ${m}\n' + '和語: $wagos'; pre0.text = result; }); clear.onClick.listen((MouseEvent event) => pre0.text = ''); } int calcFactorialRecursively(int n){ if (n < 0){ throw 'エラー'; } if (n <= 1){ return 1; } return n * calcFactorialRecursively(n -1); } int calcFactorialWithLoop(int n){ if (n < 0){ throw 'エラー'; } var result = 1; for(var i = 2; i < n; i+= 1){ result *= i; } return result; } List<String> convertNumberToWago(Iterable<int> nums){ List<String> result = []; for(var n in nums){ switch (n) { case 0: result.add('れい'); break; case 1: result.add('ひとつ'); break; case 2: result.add('ふたつ'); break; case 3: result.add('みっつ'); break; case 4: result.add('よっつ'); break; case 5: result.add('いつつ'); break; case 6: result.add('むっつ'); break; case 7: result.add('ななつ'); break; case 8: result.add('やっつ'); break; case 9: result.add('ここのつ'); break; default: result.add('?'); } } return result; }
0 コメント:
コメントを投稿