• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

昨日に引き続きIntegerに関して。
個人的に、Integerブームが起こってます。

Integerに関しては、http://www.ruby-doc.orgのClass: Integerを参照のこと。

今日は最大公約数と最小公倍数を同時に返してくれるInteger#gcdlcmについてです。

このInteger#gcdlcmの実装が気に入らない!!

どこが気に入らないのかという本題に入る前に、Integer#lcmについての実装を見てみよう!

ruby>>

File lib/rational.rb, line 457

def lcm(other)
if self.zero? or other.zero?
0
else
(self.div(self.gcd(other)) * other).abs
end
end
<<ruby

オーソドックスなの最小公倍数の求め方。
ここではあまり問題にしない。

このコードをよーく覚えておいてください。

ここからが本題です。

Integer#gcdlcmの実装を見て見る。

ruby>>

File lib/rational.rb, line 473

def gcdlcm(other)
gcd = self.gcd(other)
if self.zero? or other.zero?
[gcd, 0]
else
[gcd, (self.div(gcd) * other).abs]
end
end
<<ruby

Integer#lcmにそっくり!

・・・って、Integer#lcmのコードにInteger#gcdいれただけじゃないですか・・・。

せっかくこのコードの直前で、Integer#lcmを定義してるのに、何で使わないんやろうか・・・。

ruby>>
def gcdlcm(other)
return [self.gcd(other), self.lcm(other)]
end
<<ruby

という風に書いても不都合はなさそうやけど・・?

むしろ、こういう風に書いてくれたほうが、気持ちいいんやけども。

ん~、Integerには謎がいっぱいや。

posted by y_tsuda y_tsuda on Fri 15 Aug 2008 at 04:25 with 0 comments
Contents rssrss
Xperiaにインストールして1週間生き残ったアプリたち
gem serverをIE8から見るとヒドイことになる現象を解決
gem serverをIE8から見るとヒドイことに
Twitter, Account Suspended
GentooにRuby1.9をインストールした
GentooにScalaをインストールしてみた
多面ディスプレイ環境を手作りしてみた
lower-camel caseな文字列とアンダースコア区切りな文字列の相互変換をRubyで
topコマンドでのCPUコア毎の表示
Fedora11 (on VirtualBox) 速効レビュー
Tags
rubyGentooDIYFedoralinuxmemoScalatwitterunixvirtualboxweb
Comments rssrss
Aleksey Aleksey: The uname check is only due to a somewhat sloppy t... 02/02 07:03
Yu Tsuda Yu Tsuda: あぁ、そうですね、、syncすると戻ってしまいますね・・・。 ご指摘ありがとうございます!! 07/11 15:38
ursm ursm: /usr/portage 以下のファイルは更新のたび元に戻ってしまうので、/etc/portage/... 07/11 13:46
Yu Tsuda Yu Tsuda: 見た目だけでも、わざわざGentooをこういうリストに入れてるのがすごいなぁと思ったりしたのです(笑... 03/31 19:49
Leonard Chin (レオ) Leonard Chin (レオ): ただし、VirtualBoxで「Gentoo」などを選択しても、別にどのOSを入れても大丈夫だ。あく... 03/31 13:00
Yu Tsuda Yu Tsuda: この機能、結構便利なんですよねー。 またEmacsで便利な機能を見つけたらブログに書きまーす。 11/27 23:46
Services from s21g
MagicBag
MagicBagは、Cloudflare R2やS3互換ストレージをMacのFinderから扱えるファイル同期クライアントです。
アンテナショップめぐり
東京にある全国のアンテナショップ、イベント、特産品を地図や条件から探せるサービスです。
YOMU Web小説リーダー
YOMUは、Web小説の読み上げに特化したiPhoneアプリです。
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
jotter.meは、考えやアイデア、情報を書き留めるためのノートサービスです。