開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- Ruby (プログラミング言語)
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 13章(新しいクラスの作成と既存クラスの変更), 13.2(クラスの作り方)、13.3(インスタンス変数)、13.4(newとinitialize)、13.5(ベビードラゴンゲーム)、13.6(練習問題の続き)、オレンジの木、を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
オレンジの木
コード(BBEdit)
sample.rb
#!/usr/bin/env ruby2.0
#-*- coding: utf-8 -*-
class OrangeTree
def initialize
@height = 0
@orange_count = 0
@alive = true
@age = 0
puts 'オレンジの木を植えました!'
end
def height
@height
end
def one_year_passes
@orange_count = 0
puts '1年が経過しました。'
if @age == 10
@age = nil
@height = nil
@alive = false
end
if @alive
@age += 1
@height += 1
@orange_count += @age - 4 if @age >= 5
end
end
def count_the_orange
@orange_count
end
def pick_an_orange
if @alive
if @age >= 5
if @orange_count > 0
@orange_count -= 1
return 'とてもおいしいオレンジの実が採れました。'
else
return '今年はもう採れる実がありません。'
end
else
return "樹齢#{@age}なので、まだ採れる実はありません。"
end
else
return '木はもう枯れているので美はとれません。'
end
end
end
ot = OrangeTree.new
11.times do
ot.one_year_passes
n = ot.count_the_orange
puts "高さ: #{ot.height} 実の数: #{n}個"
(n + 1).times do
puts ot.pick_an_orange
end
end
入出力結果(Terminal)
$ ./sample.rb オレンジの木を植えました! 1年が経過しました。 高さ: 1 実の数: 0個 樹齢1なので、まだ採れる実はありません。 1年が経過しました。 高さ: 2 実の数: 0個 樹齢2なので、まだ採れる実はありません。 1年が経過しました。 高さ: 3 実の数: 0個 樹齢3なので、まだ採れる実はありません。 1年が経過しました。 高さ: 4 実の数: 0個 樹齢4なので、まだ採れる実はありません。 1年が経過しました。 高さ: 5 実の数: 1個 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 6 実の数: 2個 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 7 実の数: 3個 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 8 実の数: 4個 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 9 実の数: 5個 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 10 実の数: 6個 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 実の数: 0個 木はもう枯れているので美はとれません。 $
ちなみにpython3.4の場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
class OrangeTree:
def __init__(self):
self._height = 0
self._orange_count = 0
self._alive = True
self._age = 0
print('オレンジの木を植えました')
def height(self):
return self._height
def oneYearPasses(self):
self._orange_count = 0
print('1年が経過しました。')
if self._age == 10:
self._age == None
self._height = None
self._alive = False
if self._alive:
self._age += 1
self._height += 1
if self._age >= 5:
self._orange_count = self._age - 4
def countTheOrange(self):
return self._orange_count
def pickAnOrange(self):
if self._alive:
if self._age >= 5:
if self._orange_count > 0:
self._orange_count -= 1
return 'とてもおいしいオレンジの実が採れました。'
else:
return '今年はもう採れる実がありません。'
else:
return '樹齢{0}なので、まだ採れる実はありません'.format(self._age)
else:
return '木はもう枯れているので実は採れません。'
ot = OrangeTree()
for i in range(11):
ot.oneYearPasses()
n = ot.countTheOrange()
print('高さ: {0} 実の数: {1}'.format(ot.height(), ot.countTheOrange()))
for j in range(n + 1):
print(ot.pickAnOrange())
入出力結果(Terminal)
$ ./sample.py オレンジの木を植えました 1年が経過しました。 高さ: 1 実の数: 0 樹齢1なので、まだ採れる実はありません 1年が経過しました。 高さ: 2 実の数: 0 樹齢2なので、まだ採れる実はありません 1年が経過しました。 高さ: 3 実の数: 0 樹齢3なので、まだ採れる実はありません 1年が経過しました。 高さ: 4 実の数: 0 樹齢4なので、まだ採れる実はありません 1年が経過しました。 高さ: 5 実の数: 1 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 6 実の数: 2 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 7 実の数: 3 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 8 実の数: 4 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 9 実の数: 5 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: 10 実の数: 6 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 とてもおいしいオレンジの実が採れました。 今年はもう採れる実がありません。 1年が経過しました。 高さ: None 実の数: 0 木はもう枯れているので実は採れません。 $
0 コメント:
コメントを投稿