開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 7章(フロー制御), 7.5(練習問題)耳の遠いおばあちゃん を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
耳の遠いおばあちゃん
コード(TextWrangler)
sample.rb
#!/usr/bin/env ruby1.9 #-*- coding: utf-8 -*- while true result = gets.chomp break if result == "BYE" if result == result.upcase year = 1930 + rand(21) puts "NO, NOT SINCE #{year}!" else puts "HUH?! SPEAK UP, SONNY!" end end puts "BYE"
入出力結果(Terminal)
$ ./sample.rb hi HUH?! SPEAK UP, SONNY! Hi HUH?! SPEAK UP, SONNY! HI NO, NOT SINCE 1939! HI NO, NOT SINCE 1943! HI NO, NOT SINCE 1947! HI NO, NOT SINCE 1930! HI NO, NOT SINCE 1935! Bye HUH?! SPEAK UP, SONNY! BYE BYE $
ちなみにJavaScriptの場合。
コード(TextWrangler)
<script> var year; function clicked(){ var result = $('#t0').val(); if(result === "BYE"){ $('#d0').append("<p>BYE</p>"); $('#t0').remove(); $('#b0').remove(); return; } if(result.toUpperCase() == result){ year = 1930 + parseInt(Math.random()*21); $('#d0').append("<p>NO, NOT SINCE " + year + "!</p>"); } else { $('#d0').append("<p>HUH?! SPEAK UP, SONNY!</p>"); } } // ボタンクリックじゃなくてEnterでも動くように追加(onkeydown) function f(nsEvent){ var event = nsEvent ? nsEvent : window.event; if(event.keyCode == 13){ clicked(); } } </script> <div id="d0"> </div> <input id="t0" type="text" value="" onkeydown="f()"/> <input id="b0" type="button" value="say" onclick="clicked()"/>
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- import random while 1: result = input() if result == "BYE": break if result == result.upper(): year = random.randint(1930,1950) print("No, NOT SINCE {0}!".format(year)) else: print("HUH?! SPEAK UP, SONNY!") print("BYE")
入出力結果(Terminal)
$ ./sample.py hi HUH?! SPEAK UP, SONNY! Hi HUH?! SPEAK UP, SONNY! HI No, NOT SINCE 1940! HI No, NOT SINCE 1950! HI No, NOT SINCE 1948! HI No, NOT SINCE 1930! HI No, NOT SINCE 1943! Bye HUH?! SPEAK UP, SONNY! BYE BYE $
0 コメント:
コメントを投稿