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