2012年9月4日火曜日

開発環境

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

その他参考書籍

シャッフル

コード(TextWrangler)

sample.rb

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

def shuffle some_array
  shuffle_tmp some_array,[]
end

def shuffle_tmp unshuffled_array,shuffled_array
  while unshuffled_array.length > 0
    l = unshuffled_array.length
    r = rand(l)
    tmp = []
    (0...l).each do |i|
      if i == r
        shuffled_array.push unshuffled_array[i]
      else
        tmp.push unshuffled_array[i]
      end
    end
    unshuffled_array = tmp
  end
  shuffled_array
end

numbers = [1,2,3,4,5,6,7,8,9,10,10]
strings = %w[A B C D E a b c d e e]
[numbers,strings].each do |array|
  shuffled = shuffle array
  puts "シャッフル前: #{array.join(" ")}"
  puts "シャッフル後: #{shuffled.join(" ")}"
end

入出力結果(Terminal)

$ ./sample.rb
シャッフル前: 1 2 3 4 5 6 7 8 9 10 10
シャッフル後: 7 3 8 6 2 10 10 9 4 1 5
シャッフル前: A B C D E a b c d e e
シャッフル後: B d a E C e c D e A b
$

0 コメント:

コメントを投稿