開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 9章(自作メソッドの書き方), 9.5(練習問題)古典的なローマ数字 を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
古典的なローマ数字
コード(BBEdit)
sample.rb
#!/usr/bin/env ruby1.9 #-*- coding: utf-8 -*- def old_roman_numeral n roman = "" roman += 'M' * (n / 1000) n = n % 1000 roman += 'D' * (n / 500) n = n % 500 roman += 'C' * (n / 100) n = n % 100 roman += 'L' * (n / 50) n = n % 50 roman += 'X' * (n / 10) n = n % 10 roman += 'V' * (n / 5) roman += 'I' * (n % 5) roman end [4,45,456,4567].each do |n| puts "#{n}: #{old_roman_numeral n}" end
入出力結果(Terminal)
#!/usr/bin/env ruby1.9 #-*- coding: utf-8 -*- def old_roman_numeral n roman = "" roman += 'M' * (n / 1000) n = n % 1000 roman += 'D' * (n / 500) n = n % 500 roman += 'C' * (n / 100) n = n % 100 roman += 'L' * (n / 50) n = n % 50 roman += 'X' * (n / 10) n = n % 10 roman += 'V' * (n / 5) roman += 'I' * (n % 5) roman end [4,45,456,4567].each do |n| puts "#{n}: #{old_roman_numeral n}" end
ちなみにJavaScriptの場合。
コード(BBEdit)
String.prototype.repeat = function(n){ var result = ""; for(var i = 0; i < n; i++){ result += this; } return result; }; var old_roman_numeral = function(n){ var roman = 'M'.repeat(Math.floor(n / 1000)); n %= 1000; roman += 'D'.repeat(Math.floor(n / 500)); n %= 500; roman += 'C'.repeat(Math.floor(n / 100)); n %= 100; roman += 'L'.repeat(Math.floor(n / 50)); n %= 50; roman += 'X'.repeat(Math.floor(n / 10)); n %= 10; roman += 'V'.repeat(Math.floor(n / 5)); roman += 'I'.repeat( n % 5); return roman; }; var n = parseInt($('#number').val(), 10); $('#pre0').text(old_roman_numeral(n)); $('#number').css('text-align', 'right');
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3 # -*- coding: utf-8 -*- def old_roman_numeral(n): roman = 'M' * (n // 1000) n = n % 1000 roman += 'D' * (n // 500) n = n % 500 roman += 'C' * (n // 100) n = n % 100 roman += 'L' * (n // 50) n = n % 50 roman += 'X' * (n // 10) n = n % 10 roman += 'V' * (n // 5) roman += 'I' * (n % 5) return roman for n in [4,45,456,4567]: print("{0}: {1}".format(n, old_roman_numeral(n)))
入出力結果(Terminal)
$ ./sample.py 4: IIII 45: XXXXV 456: CCCCLVI 4567: MMMMDLXVII $
perlの場合。
sample.pl
コード(BBEdit)
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; sub old_roman_numeral{ my $n = shift; my $roman = 'M' x ( $n / 1000 ); $n = $n % 1000; $roman .= 'D' x ( $n / 500 ); $n = $n % 500; $roman .= 'C' x ( $n / 100 ); $n = $n % 100; $roman .= 'L' x ( $n / 50 ); $n = $n % 50; $roman .= 'X' x ($n / 10); $n = $n % 10; $roman .= 'V' x ($n / 5 ); $roman .= 'I' x ($n % 5); $roman; } for(4, 45, 456, 4567){ print $_ . ": " . old_roman_numeral($_) . "\n"; }
入出力結果(Terminal)
$ ./sample.pl 4: IIII 45: XXXXV 456: CCCCLVI 4567: MMMMDLXVII $
0 コメント:
コメントを投稿