2013年10月12日土曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の10章(章全部で復習), 10.2(通過儀礼としてのソート)、再帰をDartで解いてみる。

その他参考書籍

通過儀礼としてのソート(再帰)

コード

sample.dart

List sort(List some_list){
  return recursiveSort(some_list, []);
}
List recursiveSort(List unsorted_list, List sorted_list){
  if(unsorted_list.length == 0){
    return sorted_list;
  }
  var unsorted = unsorted_list.toList();
  var min = unsorted.removeAt(0);
  var tmp = [];
  for(String e in unsorted){
    if(e.compareTo(min) < 0){
      tmp.add(min);
      min = e;
    } else {
      tmp.add(e);
    }
  }
  sorted_list.add(min);
  return recursiveSort(tmp, sorted_list);
}

void main(){
  var langs = ["ruby", "python", "dart", "haskell", "c", 
               "scheme", "lisp", "csharp", "cpp", "perl"];
  var sorted_langs = sort(langs);
  print('ソート前: ${langs}');
  print('ソート後: ${sorted_langs}');
}

入出力結果

ソート前: [ruby, python, dart, haskell, c, scheme, lisp, csharp, cpp, perl]
ソート後: [c, cpp, csharp, dart, haskell, lisp, perl, python, ruby, scheme]

0 コメント:

コメントを投稿