2013年10月15日火曜日

開発環境

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

その他参考書籍

シャッフル(再帰、ラッパーメソッド無し)

コード

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){
  var shuffled_list = [];
  var unshuffled_list = some_list.toList();
  var random = new math.Random();
  while(unshuffled_list.length != 0){
    var l = unshuffled_list.length;
    var r = random.nextInt(l);
    shuffled_list.add(unshuffled_list[r]);
    unshuffled_list.removeAt(r);
  }
  return 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]
シャッフル後: [haskell, c, perl, ruby, csharp, dart, cpp, python, lisp, scheme]

0 コメント:

コメントを投稿