2013年2月3日日曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 12章(新しいクラスのオブジェクト), 12.2(練習問題)ハッピーバースデー を解いてみる。

その他参考書籍

ハッピーバースデー

コード(BBEdit)

sample.rb

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

puts "誕生日を入力"
print "西暦: "
b_y = gets.chomp.to_i
print "月: "
b_m = gets.chomp.to_i
print "日: "
b_d = gets.chomp.to_i

td = Time.new
age = 1
while Time.local(b_y + age, b_m, b_d). <= td
  puts "平手打ち(パシッ) (#{age}歳)"
  age += 1
end

入出力結果(Terminal)

$ ./sample.rb
誕生日を入力
西暦: 2000
月: 2
日: 2
平手打ち(パシッ) (1歳)
平手打ち(パシッ) (2歳)
平手打ち(パシッ) (3歳)
平手打ち(パシッ) (4歳)
平手打ち(パシッ) (5歳)
平手打ち(パシッ) (6歳)
平手打ち(パシッ) (7歳)
平手打ち(パシッ) (8歳)
平手打ち(パシッ) (9歳)
平手打ち(パシッ) (10歳)
平手打ち(パシッ) (11歳)
平手打ち(パシッ) (12歳)
平手打ち(パシッ) (13歳)
$ ./sample.rb
誕生日を入力
西暦: 2000
月: 2
日: 3
平手打ち(パシッ) (1歳)
平手打ち(パシッ) (2歳)
平手打ち(パシッ) (3歳)
平手打ち(パシッ) (4歳)
平手打ち(パシッ) (5歳)
平手打ち(パシッ) (6歳)
平手打ち(パシッ) (7歳)
平手打ち(パシッ) (8歳)
平手打ち(パシッ) (9歳)
平手打ち(パシッ) (10歳)
平手打ち(パシッ) (11歳)
平手打ち(パシッ) (12歳)
平手打ち(パシッ) (13歳)
$ ./sample.rb
誕生日を入力
西暦: 2000
月: 2
日: 4
平手打ち(パシッ) (1歳)
平手打ち(パシッ) (2歳)
平手打ち(パシッ) (3歳)
平手打ち(パシッ) (4歳)
平手打ち(パシッ) (5歳)
平手打ち(パシッ) (6歳)
平手打ち(パシッ) (7歳)
平手打ち(パシッ) (8歳)
平手打ち(パシッ) (9歳)
平手打ち(パシッ) (10歳)
平手打ち(パシッ) (11歳)
平手打ち(パシッ) (12歳)
$

ちなみにJavaScriptの場合。

コード(BBEdit)

var b_year = parseInt($('#b_year').val(), 10),
    b_mon = parseInt($('#b_mon').val(), 10),
    b_day = parseInt($('#b_day').val(), 10),
    bd = new Date(b_year, b_mon - 1, b_day),
    td = new Date(),
    age = 1,
    result = "";
while ( bd.setYear(year = bd.getFullYear() + 1) <= td ) {
    result += "平手打ち(パシッ) (" + age + "歳)\n";
    age += 1;
}
$('#pre0').text(result);

誕生日を入力

pythonの場合。

sample.py

コード(BBEdit)

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

import datetime

print("誕生日を入力")
b_year = int(input("西暦: "))
b_month = int(input("月: "))
b_day = int(input("日: "))
bd = datetime.datetime(b_year, b_month, b_day)
td = datetime.datetime.today()
age = 1
while bd.replace(year=bd.year + age) <= td:
    print("平手打ち(パシッ) {0}歳".format(age))
    age += 1

入出力結果(Terminal)

$ ./sample.py
誕生日を入力
西暦: 2000
月: 2
日: 2
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
平手打ち(パシッ) 13歳
$ ./sample.py
誕生日を入力
西暦: 2000
月: 2
日: 3
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
平手打ち(パシッ) 13歳
$ ./sample.py
誕生日を入力
西暦: 2000
月: 2
日: 4
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
$

perlの場合。

sample.pl

コード(BBEdit)

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
use Time::Local;

print "誕生日を入力\n";
print "西暦: ";
chomp(my $b_year = <STDIN>);
print "月: ";
chomp(my $b_mon = <STDIN>);
print "日: ";
chomp(my $b_day = <STDIN>);
my $age = 1;
my $td = timelocal(localtime);
while (timelocal(0, 0, 0, $b_day, $b_mon - 1, $b_year + $age) <= $td) {
    print "平手打ち(パシッ) ${age}歳\n";
    $age += 1;
}

入出力結果(Terminal)

$ ./sample.pl
誕生日を入力
西暦: 2000
月: 2
日: 2
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
平手打ち(パシッ) 13歳
$ ./sample.pl
誕生日を入力
西暦: 2000
月: 2
日: 3
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
平手打ち(パシッ) 13歳
$ ./sample.pl
誕生日を入力
西暦: 2000
月: 2
日: 4
平手打ち(パシッ) 1歳
平手打ち(パシッ) 2歳
平手打ち(パシッ) 3歳
平手打ち(パシッ) 4歳
平手打ち(パシッ) 5歳
平手打ち(パシッ) 6歳
平手打ち(パシッ) 7歳
平手打ち(パシッ) 8歳
平手打ち(パシッ) 9歳
平手打ち(パシッ) 10歳
平手打ち(パシッ) 11歳
平手打ち(パシッ) 12歳
$

0 コメント:

コメントを投稿