2012年9月3日月曜日

開発環境

『初めてのプログラミング 第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
  array = Array.new(unshuffled_array)
  return shuffled_array if unshuffled_array.length <= 0
  l = unshuffled_array.length
  r = rand(l)
  tmp = []
  shuffled_array.push unshuffled_array[r]
  (0...l).each do |i|
    tmp.push unshuffled_array[i] unless i == r
  end
  shuffle_tmp tmp,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
シャッフル後: 10 7 9 8 2 6 5 1 4 10 3
シャッフル前: A B C D E a b c d e e
シャッフル後: E a C D d A c e B e b
$

0 コメント:

コメントを投稿