Sinatraのあらかると

記録することで、環境構築で悩まない。

Rubyでeach文と、timesを使った九九を。

休暇に入って、Scalaに前から興味があり入門も読破したことだから開発者直伝の指南書を探していました。それでみつけた、Scalaスケーラブルプログラミングをみていたら九九を出力するようなコードを発見。これはRubyで簡単に書いてみたい。もともと、九九は丸暗記だったはずなので出力で一覧がみれればいい。乱雑に書いてみるか。Rubyでふつーに、書きたいことが書けるのでたやすいはず。


#coding: utf-8

9.times do |i|
print i+1
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*2}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*3}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*4}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*5}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*6}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*7}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*8}"
print " "
end
puts "\n"
(1..9).each do |i|
print "#{i*9}"
print " "
end
puts ""

環境はRuby1.9.3-p0にて。

出力結果


1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

うん、ちゃんと九九が言えてるな。OKOK。
スペースで区切ってみたらいい感じでみやすい。
当たり前の算数の基本、かけ算の一覧表の出来上がり。

このかけ算一覧プログラムを、
ruby-profでパフォーマンスを測ってみた。


Total: 0.001740

%self total self wait child calls name
31.26 0.00 0.00 0.00 0.00 172 IO#write
30.92 0.00 0.00 0.00 0.00 1 Kernel#load
15.11 0.00 0.00 0.00 0.00 8 Range#each
12.93 0.00 0.00 0.00 0.00 162 Kernel#print
3.56 0.00 0.00 0.00 0.00 81 Fixnum#to_s
1.67 0.00 0.00 0.00 0.00 1 Integer#times
1.32 0.00 0.00 0.00 0.00 2 Global#
[No method]
1.03 0.00 0.00 0.00 0.00 2 IO#set_encoding
0.98 0.00 0.00 0.00 0.00 9 Kernel#puts
0.63 0.00 0.00 0.00 0.00 8
#allocate
0.57 0.00 0.00 0.00 0.00 9 IO#puts

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.