開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 7章(フロー制御), 7.5(練習問題)るう年 を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
うるう年
コード(TextWrangler)
sample.rb
#!/usr/bin/env ruby1.9
#-*- coding: utf-8 -*-
print "範囲の先頭の年を入力: "
start = gets.chomp.to_i
print "範囲の末尾の年を入力: "
stop = gets.chomp.to_i
years = []
year = start
while year <= stop
break if year % 400 == 0 or
(year % 100 != 0 and year % 4 == 0)
year += 1
end
years.push year
year += 4
while year <= stop
years.push year if year % 400 == 0 or
(year % 100 != 0 and year % 4 == 0)
year += 4
end
print years.join("\n") + "\n"
入出力結果(Terminal)
$ ./sample.rb 範囲の先頭の年を入力: 1595 範囲の末尾の年を入力: 1605 1596 1600 1604 $ ./sample.rb 範囲の先頭の年を入力: 1795 範囲の末尾の年を入力: 1810 1796 1804 1808 $ ./sample.rb 範囲の先頭の年を入力: 1895 範囲の末尾の年を入力: 1910 1896 1904 1908 $ ./sample.rb 範囲の先頭の年を入力: 1980 範囲の末尾の年を入力: 2005 1980 1984 1988 1992 1996 2000 2004 $
ちなみにJavaScriptの場合。
コード(TextWrangler)
var start = parseInt($('#t0').val());
var stop = parseInt($('#t1').val());
years = [];
var year = start;
while(year <= stop){
if(year % 400 === 0 ||
(year % 100 !== 0 && year % 4 === 0)) break;
year += 1;
}
years.push(year);
year += 4;
while(year <= stop){
if(year % 400 === 0 ||
(year % 100 !== 0 && year % 4 === 0)){
years.push(year);
}
year += 4;
}
var result = years.join("\n") + "\n";
$('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
print("範囲の先頭の年を入力: ", end="")
start = int(input())
print("範囲の末尾の年を入力: ", end="")
stop = int(input())
years = []
year = start
while year <= stop:
if year % 400 == 0 or \
(year % 100 != 0 and year % 4 == 0):
break
year += 1
else:
print("範囲に閏年は含まれていない")
years.append(year)
year += 4
while year <= stop:
if year % 400 == 0 or \
(year % 100 != 0 and year % 4 == 0):
years.append(year)
year += 4
years = map(str, years)
print("\n".join(years))
入出力結果(Terminal)
$ ./sample.py 範囲の先頭の年を入力: 1595 範囲の末尾の年を入力: 1605 1596 1600 1604 $ ./sample.py 範囲の先頭の年を入力: 1795 範囲の末尾の年を入力: 1810 1796 1804 1808 $ ./sample.py 範囲の先頭の年を入力: 1895 範囲の末尾の年を入力: 1910 1896 1904 1908 $ ./sample.py 範囲の先頭の年を入力: 1980 範囲の末尾の年を入力: 2005 1980 1984 1988 1992 1996 2000 2004 $
0 コメント:
コメントを投稿