開発環境
- 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 コメント:
コメントを投稿