2013年10月16日水曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の10章(章全部で復習), 10.3(練習問題)、辞書順ソートをDartで解いてみる。

その他参考書籍

辞書順ソート(小文字化(toLowerCase))

コード

sample.dart

List sort(List<String> some_list){
  return recursiveSort(some_list, []);
}
List recursiveSort(List<String> unsorted_list, List<String> sorted_list){
  if(unsorted_list.length == 0){
    return sorted_list;
  }
  var unsorted = unsorted_list.toList();
  var min = unsorted.removeAt(0);
  var temp = [];
  for(String s in unsorted){
    if(s.toLowerCase().compareTo(min.toLowerCase()) < 0){
      temp.add(min);
      min = s;
    } else {
      temp.add(s);
    }
  }
  sorted_list.add(min);
  return recursiveSort(temp, sorted_list);
}
void main(){
  var langs = ['ruby', 'python', 'dart', 'haskell', 'c', 
               'scheme', 'lisp', 'csharp', 'cpp', 'perl',
               '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, Ruby, Python, Dart, Haskell, C, Scheme, Lisp, CSharp, CPP, Perl]
ソート後: [c, C, cpp, CPP, CSharp, csharp, Dart, dart, Haskell, haskell, lisp, Lisp, perl, Perl, Python, python, ruby, Ruby, scheme, Scheme]

0 コメント:

コメントを投稿