2013年2月24日日曜日

開発環境

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

その他参考書籍

続・耳の遠いおばあちゃん

コード(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 コメント:

コメントを投稿