2012年12月4日火曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 2章(数値), 2.5(練習問題)この本の著者の年齢 を解いてみる。

その他参考書籍

この本の著者の年齢

コード(TextWrangler)

sample.rb

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

td = Time.new
birth = td - 10.25 * (10 ** 8)
age = td.year - birth.year
age -= 1 if td.month < birth.month or (td.month == birth.month and td.day < birth.day)
puts "誕生日: #{birth}"
puts "今日: #{td}"
puts "年利: #{age}歳"

入出力結果(Terminal)

$ ./sample.rb
誕生日: 1980-06-12 04:54:10 +0900
今日: 2012-12-04 15:07:30 +0900
年利: 32歳
$

ちなみにJavaScriptの場合。

コード(TextWrangler)

var result = "";
var td = new Date();
var birth = new Date();
birth.setSeconds(td.getSeconds() - 10.125 * Math.pow(10, 8));
var age = td.getYear() - birth.getYear();
if(td.getMonth() < birth.getMonth() || 
  (td.getMonth() === birth.getMonth() && td.getDate() < birth.getDate())){
  age--; 
}
result += "誕生日: " + birth + "\n" +
  "今日: " + td + "\n" +
  "年齢: " + age + "歳\n";
$('#pre0').text(result);


pythonの場合。

sample.py

コード(TextWrangler)

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

import datetime

td = datetime.datetime.today()
birth_tm = td.timestamp() - 10.25 * (10**8)
birth = datetime.datetime.fromtimestamp(birth_tm)
age = td.year - birth.year
if td.month < birth.month or (td.month == birth.month and td.day < birth.day):
  age -= 1

print("誕生日: {0}".format(birth))
print("今日: {0}".format(td))
print("年齢: {0}".format(age))

入出力結果(Terminal)

$ ./sample.py
誕生日: 1980-06-12 05:32:49.374804
今日: 2012-12-04 15:46:09.374805
年齢: 32
$

perlの場合。

sample.pl

コード(TextWrangler)

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

my $td_tm = timelocal((localtime)[0..5]);
my $birth_tm = $td_tm - 10.25 * (10**8);
my($sec, $min, $hour, $mday, $mon, $year) = (localtime($td_tm))[0..5];
my($b_sec, $b_min, $b_hour, $b_mday, $b_mon, $b_year) = (localtime($birth_tm))[0..5];
my $age = $year - $b_year;
$age -= 1 if $mon < $b_mon or ($mon == $b_mon and $mday < $b_mday);
printf "誕生日: %d-%02d-%02d %02d:%02d:%02d\n", 
  $b_year + 1900, $b_mon + 1, $b_mday, $b_hour, $b_min, $b_sec;
printf "今日: %d-%02d-%02d %02d:%02d:%02d\n", 
  $year + 1900, $mon + 1, $mday, $hour, $min, $sec;
printf "年齢: %d歳\n", $age;

入出力結果(Terminal)

$ ./sample.pl
誕生日: 1980-06-12 05:48:45
今日: 2012-12-04 16:02:05
年齢: 32歳
$

0 コメント:

コメントを投稿