2013年1月17日木曜日

開発環境

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

その他参考書籍

うるう年

コード(BBEdit)

sample.rb

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

print "範囲の先頭: "
start = gets.chomp.to_i
print "範囲の末尾: "
stop = gets.chomp.to_i

year = start
result = "うるう年一覧\n"
while year <= stop
  if (year % 400 == 0) ||
    (year % 100 != 0 and year % 4 == 0)
    result += "#{year}\n"
    year += 4
    break
  else
    year += 1
  end
end

while year <= stop
  if (year % 400 == 0) ||
    (year % 100 != 0 and year % 4 == 0)
    result += "#{year}\n"
  end
  year += 4
end

print result

入出力結果(Terminal)

$ ./sample.rb
範囲の先頭: 1599
範囲の末尾: 1701
うるう年一覧
1600
1604
1608
1612
1616
1620
1624
1628
1632
1636
1640
1644
1648
1652
1656
1660
1664
1668
1672
1676
1680
1684
1688
1692
1696
$

ちなみにJavaScriptの場合。

コード(BBEdit)

var start = parseInt($('#start_year').val(), 10);
var stop = parseInt($('#stop_year').val(), 10);
var result = "うるう年一覧\n";
while(start <= stop){
  if((start % 400 === 0) ||
    (start % 100 !== 0 && start % 4 === 0)){
    result += start + "\n";
    start += 4;
    break;
  } else {
    start += 1;
  }
}
while(start <= stop){
  if((start % 400 === 0) ||
    (start % 100 !== 0 && start % 4 === 0)){
    result += start + "\n";
  }  
  start += 4;
}
$('#pre0').text(result);



pythonの場合。

sample.py

コード(BBEdit)

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

start = int(input("範囲の先頭: "))
stop = int(input("範囲の末尾: "))

result = "うるう年一覧\n"
while start <= stop:
    if (start % 400 == 0) or (
      start % 100 != 0 and start % 4 == 0):
        result += "{0}\n".format(start)
        start += 4
        break
    else:
        start += 1

for year in range(start, stop + 1, 4):
  if (year % 400 == 0) or (
    year % 100 != 0 and year % 4 == 0):
      result += "{0}\n".format(year)

print(result, end="")

入出力結果(Terminal)

$ ./sample.py
範囲の先頭: 1599
範囲の末尾: 1701
うるう年一覧
1600
1604
1608
1612
1616
1620
1624
1628
1632
1636
1640
1644
1648
1652
1656
1660
1664
1668
1672
1676
1680
1684
1688
1692
1696
$

perlの場合。

sample.pl

コード(BBEdit)

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

print "範囲の先頭: ";
chomp(my $start = <STDIN>);
print "範囲の末尾: ";
chomp(my $stop = <STDIN>);
my $result = "うるう年一覧\n";
while($start <= $stop){
  if(($start % 400 == 0) ||
    ($start % 100 != 0 && $start % 4 == 0)){
    $result .= "$start\n";
    $start += 4;
    last;
  } else {
    $start += 1;
  }
}
while($start <= $stop){
  if(($start % 400 == 0) ||
    ($start % 100 != 0 && $start % 4 == 0)){
    $result .= "$start\n";
  }  
  $start += 4;
}
print $result;

入出力結果(Terminal)

$ ./sample.pl
範囲の先頭: 1599
範囲の末尾: 1701
うるう年一覧
1600
1604
1608
1612
1616
1620
1624
1628
1632
1636
1640
1644
1648
1652
1656
1660
1664
1668
1672
1676
1680
1684
1688
1692
1696
$

0 コメント:

コメントを投稿