問題2

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

def bubblesort(data)
  if data.length <= 1
    data
  else
    up = []
    y = data.shift 
    for x in data
      if x < y
        up << x #upの配列にxをいれる
      else y < x && x == y
        up << y #upの配列にyをいれる
        y = x
      end
    end
    bubblesort(up) + [y]
  end
end

def hyoji(a)
  printf("[%s]\n", a.join(", "))
end

array = []
while true
  print"好きな数字を入力して下さい。(終了はq)\n"
  number = gets.chomp!
  if number == "q"
  then break
  end
  array.push(number.to_i)
end

print"もとの順番\n"
hyoji(array)
print"並べ替え後\n"
hyoji(bubblesort(array))


2、プログラムの実行結果

sime{c118xxx}% ./bubblesort.rb
好きな数字を入力して下さい。(終了はq)
343
好きな数字を入力して下さい。(終了はq)
67
好きな数字を入力して下さい。(終了はq)
35
好きな数字を入力して下さい。(終了はq)
97
好きな数字を入力して下さい。(終了はq)
14
好きな数字を入力して下さい。(終了はq)
78
好きな数字を入力して下さい。(終了はq)
q
もとの順番
[343, 67, 35, 97, 14, 78]
並べ替え後
[14, 35, 67, 78, 97, 343]


3、プログラムの説明

まず、このプログラムは後半のほうに書かれているwhile trueが働きます。
そして、number = gets.chomp!で数字を入力してもらう。そうすると、
array.push(number.to_i)でnumberで入力された数字を配列arrayのなかに追加し
ていきます。「q」が入力されるまで繰り返されます。

qを入力した後は、hyoji(array)で元の順番にする操作が、
hyoji(bubblesort(array))で並び替えた順にする操作を行っていきます。

もとの順番の方は
array.push(number.to_i)
で配列に入った数字を
def hyoji(a)
  printf("[%s]\n", a.join(", "))
end
を使い表示していきます。「[]」の中に「,」を追加して表示されるようにして
います。join を使ったのは表示された最後に「,」が表示されないようにするた
めです。

並べ替えた順には、
4行目から20行目の def bubblesort(data) 〜 endで処理を行った上で
def hyoji(a)
  printf("[%s]\n", a.join(", "))
end
を使って表示します。

4〜20行目について説明します。
元の順番同様、
while ture 〜 end のなかでarrayに入った数字を4〜20行目の
def bubblesort(data) 〜 end
を呼び出します。data.length <= 1であるならば dataメソッドを展開します。
それ以外なら、配列upと y = data.shift を定めます。y = data.shift の
「shift」は配列upの最初の要素を削除し、その要素を返しています。

for x in data〜endではdataの数字をxに代入しています。
もし、x < yであれば
upの配列にxの値ををいれ、
y < x && x == yであるならば
upの配列にyをいれ、
y = x とします。

if data.length <= 1  か elseの処理が終わると、
bubblesort(up) + [y]
の操作が行われます。
最終的にhyoji(bubblesort(array))から、
def hyoji(a)
  printf("[%s]\n", a.join(", "))
end
が呼び出され並び替えが完了します。


問題3

1、説明と頑張った点

ロゴを作りました。このロゴの文字はそれぞれ一筆書きで書かれています。
頑張った点は、できるだけ文字が読めるようにしました。
「基礎プロ」と「かんだ」の文字がかかれています。

2、感想

難しくはありませんでしたが、色彩感覚が自分はあまり良くないなと感じました。
時間をもっとかけてより良い作品にしたかったな?と思いました。

添付(問題2と問題3)