開発環境
- OS X Lion - Apple(OS)
- Dart SDK (開発環境)
- Dart (プログラミング言語)
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の10章(章全部で復習), 10.3(練習問題)、シャッフル(再帰)をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
シャッフル(再帰)
コード
sample.dart
import 'dart:math' as math; List sort(List some_list){ var unsorted_list = some_list.toList(); var sorted_list = []; while(unsorted_list.length != 0){ var min = unsorted_list.removeAt(0); var tmp = []; for(var x in unsorted_list){ if(x.compareTo(min) < 0){ tmp.add(min); min = x; } else { tmp.add(x); } } sorted_list.add(min); unsorted_list = tmp; } return sorted_list; } List shuffle(List some_list){ return recursiveShuffle (some_list, []); } List recursiveShuffle(List unshuffled_list, List shuffled_list){ var a = unshuffled_list.length; if(a == 0){ return shuffled_list; } var random = new math.Random(); var r = random.nextInt(a); shuffled_list.add(unshuffled_list[r]); var tmp = unshuffled_list.sublist(0, r); tmp.addAll(unshuffled_list.sublist(r + 1)); return recursiveShuffle(tmp, shuffled_list); } void main(){ var langs = ["ruby", "python", "dart", "haskell", "c", "scheme", "lisp", "csharp", "cpp", "perl"]; var sorted_langs = sort(langs); var shuffled_langs = shuffle(sorted_langs); print('ソート前: ${langs}'); print('ソート後: ${sorted_langs}'); print('シャッフル後: ${shuffled_langs}'); }
入出力結果
ソート前: [ruby, python, dart, haskell, c, scheme, lisp, csharp, cpp, perl] ソート後: [c, cpp, csharp, dart, haskell, lisp, perl, python, ruby, scheme] シャッフル後: [dart, c, lisp, cpp, haskell, ruby, csharp, perl, python, scheme]
0 コメント:
コメントを投稿