2013年1月15日火曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 7章(フロー制御), 7.5(練習問題)耳の遠いおばあちゃん を解いてみる。

その他参考書籍

耳の遠いおばあちゃん

コード(BBEdit)

sample.rb

#!/usr/bin/env ruby1.9
#-*- coding: utf-8 -*-

while true
    said = gets.chomp
    if said == 'BYE'
      puts "BYE"
      break
    elsif said == said.upcase
      puts "NO, NOT SINCE #{1930 + rand(21)}!"
    else
      puts "HUH?! SPEAK UP, SONNY!"
    end
end

入出力結果(Terminal)

$ ./sample.rb
hi
HUH?! SPEAK UP, SONNY!
Hi
HUH?! SPEAK UP, SONNY!
HI
NO, NOT SINCE 1930!
HI
NO, NOT SINCE 1936!
HI
NO, NOT SINCE 1948!
HI
NO, NOT SINCE 1937!
HI
NO, NOT SINCE 1938!
bye
HUH?! SPEAK UP, SONNY!
Bye
HUH?! SPEAK UP, SONNY!
BYE
BYE
$

ちなみにJavaScriptの場合。

コード(BBEdit)

<pre id='pre0' ></pre>

<label id="l0"><input id="said" type="text" value="Hi" /></label>
<input id="btn0" type="button" value="話しかける" /></label>
<script>
function said(){
  var s = $('#said').val();
  if(s === ""){
    return;
  } else if(s === 'BYE'){
    $('#pre0').append('BYE\n');
    $('#l0').remove();
    $('#btn0').remove();
    return;
  } else if(s.toUpperCase() === s){
    var year = 1930 + parseInt(Math.random() * 21);
    $('#pre0').append("NO, NOT SINCE " + year + "!\n");
  } else {
    $('#pre0').append("HUH?! SPEAK UP, SONNY!\n");
  }
  $('#said').val('');
}
$('#btn0').click(said);
$('#said').keydown(function(e){
  if(e.keyCode === 13) said();
});
</script>





pythonの場合。

sample.py

コード(BBEdit)

#!//usr//bin//env python3.3
# -*- coding: utf-8 -*-

import random
while True:
    said = input()
    if said == "":pass
    elif said == "BYE":
        print("BYE")
        break
    elif said.upper() == said:
        print("NO, NOT SINCE {0}!".format(random.randint(1930, 1950)))
    else:
        print("HUH?! SPEAK UP, SONNY!")

入出力結果(Terminal)

$ ./sample.py
hi
HUH?! SPEAK UP, SONNY!
HI
NO, NOT SINCE 1945!
Hi
HUH?! SPEAK UP, SONNY!
HI
NO, NOT SINCE 1930!
HI
NO, NOT SINCE 1946!
HI
NO, NOT SINCE 1939!
HI
NO, NOT SINCE 1933!
bye
HUH?! SPEAK UP, SONNY!
Bye
HUH?! SPEAK UP, SONNY!
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";

while(1){
  chomp(my $said = <STDIN>);
  if($said eq 'BYE'){
    print "BYE\n";
    last
  } elsif ((uc $said) eq $said){
    print "NO, NOT SINCE " . (1930 + int(rand 21)) . "!\n";
  } else {
    print "HUH?! SPEAK UP, SONNY!\n";
  }
}

入出力結果(Terminal)

$ ./sample.pl
hi
HUH?! SPEAK UP, SONNY!
Hi
HUH?! SPEAK UP, SONNY!
HI
NO, NOT SINCE 1947!
HI
NO, NOT SINCE 1946!
HI
NO, NOT SINCE 1931!
HI
NO, NOT SINCE 1941!
HI
NO, NOT SINCE 1931!
bye
HUH?! SPEAK UP, SONNY!
Bye
HUH?! SPEAK UP, SONNY!
BYE
BYE
$

0 コメント:

コメントを投稿