開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 7章(フロー制御), 7.5(練習問題)続・耳の遠いおばあちゃん を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
続・耳の遠いおばあちゃん
コード(BBEdit)
sample.rb
#!/usr/bin/env ruby1.9 #-*- coding: utf-8 -*- count = 0 while true said = gets.chomp if said == 'BYE' count += 1 if count == 3 puts "BYE!" break end puts "NO, NOT SINCE #{1930 + (rand 21)}!" elsif said == said.upcase puts "NO, NOT SINCE #{1930 + (rand 21)}!" count = 0 else puts "HUH?! SPEAK UP, SPNNY!" count = 0 end end
入出力結果(Terminal)
$ ./sample.rb hi HUH?! SPEAK UP, SPNNY! HI NO, NOT SINCE 1930! BYE NO, NOT SINCE 1931! BYE NO, NOT SINCE 1949! bye HUH?! SPEAK UP, SPNNY! BYE NO, NOT SINCE 1942! BYE NO, NOT SINCE 1943! BYE BYE! $
ちなみにJavaScriptの場合。
コード(BBEdit)
<pre id='pre0' ></pre> <div id="d0"> <label>話しかける: <input id="t0" type="text" value="Hi" /></label> <input id="b0" type="button" value="say" /> </div> <script> var count = 0; function clicked(){ var said = $('#t0').val(); $('#pre0').append(said + "\n"); if (said === "BYE") { count += 1; if (count === 3) { $('#pre0').append("BYE!\n"); $('#d0').remove(); return; } $('#pre0').append("NO, NOT SINCE " + (1930 + Math.floor(21 * Math.random())) + "!\n"); } else if (said === said.toUpperCase()) { count = 0; $('#pre0').append("NO, NOT SINCE " + (1930 + Math.floor(21 * Math.random())) + "!\n"); } else { count = 0; $('#pre0').append("HUH?! SPEADK UP, SONNY!\n"); } } $('#b0').click(clicked); $('#t0').keydown(function( e ) { var e = e ? e : window.event; if(e.keyCode === 13 ) { clicked(); } }); </script>
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- import random count = 0 while True: said = input() if said == 'BYE': count += 1 if count == 3: print("BYE") break print("NO, NOT SINCE {0}!".format(random.randint(1930, 1950))) elif said == said.upper(): print("NO, NOT SINCE {0}!".format(random.randint(1930, 1950))) count =0 else: print("HUH?! SPEAK UP, SPNNY!") count = 0
入出力結果(Terminal)
$ ./sample.py hi HUH?! SPEAK UP, SPNNY! HI NO, NOT SINCE 1950! BYE NO, NOT SINCE 1949! BYE NO, NOT SINCE 1950! HI NO, NOT SINCE 1944! BYE NO, NOT SINCE 1936! BYE NO, NOT SINCE 1936! BYE BYE $
perlの場合。
sample.pl
コード(BBEdit)
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; use POSIX; my $count = 0; while (1) { chomp(my $said = <STDIN>); if ($said eq 'BYE') { $count += 1; if ($count == 3) { print "BYE!\n"; last; } print "NO, NOT SINCE ", 1930 + floor(rand 21), "\n"; } elsif ($said eq uc $said) { print "NO, NOT SINCE ", 1930 + floor(rand 21), "\n"; $count = 0; } else { print "HUH?! SPEAK UP, SPNNY!\n"; $count = 0; } }
入出力結果(Terminal)
$ ./sample.pl HI NO, NOT SINCE 1942 BYE NO, NOT SINCE 1934 BYE NO, NOT SINCE 1939 HI NO, NOT SINCE 1943 bye HUH?! SPEAK UP, SPNNY! BYE NO, NOT SINCE 1937 BYE NO, NOT SINCE 1948 BYE BYE! $
0 コメント:
コメントを投稿