2012年4月13日金曜日

開発環境

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

その他参考書籍

シャッフル

コード(TextWrangler)

#!/usr/bin/env ruby
#encoding: utf-8

def shuffle some_array
  recursive_array some_array, []
end
def recursive_array unshuffled_array, shuffled_array
  return shuffled_array if unshuffled_array.length == 0
  r = rand(unshuffled_array.length)
  tmp = []
  i = 0
  while i < unshuffled_array.length
    if i == r
      shuffled_array.push unshuffled_array[i]
    else
      tmp.push unshuffled_array[i]
    end
    i += 1
  end
  recursive_array tmp, shuffled_array
end

5.times do
  [[1,2,3,4,5,6,7,8,9,10],
    ['a','b','c','d','e','f','g','h','i','j']
  ].each do |some_array|
    puts "配列            :#{some_array}"
    puts "シャッフル後: #{shuffle some_array}"
  end
end

入出力結果(Terminal)

$ ruby sample.rb
配列            :12345678910
シャッフル後: 81063952174
配列            :abcdefghij
シャッフル後: afhbjdgcei
配列            :12345678910
シャッフル後: 47692110835
配列            :abcdefghij
シャッフル後: edfhjgbcai
配列            :12345678910
シャッフル後: 13472108596
配列            :abcdefghij
シャッフル後: efbcdgijha
配列            :12345678910
シャッフル後: 81062315947
配列            :abcdefghij
シャッフル後: ibecgjafhd
配列            :12345678910
シャッフル後: 10817649253
配列            :abcdefghij
シャッフル後: ijeagfhdcb
$

今回の周ではirb(インタラクティブRuby)も少しずつ活用してみることに。

まだ上記の本を入手してないのでまた最初から。

本書を続けつつ、上記の本を早く入手してそっちに切り替え。

0 コメント:

コメントを投稿