トップ «前の日記(2010-01-31 [J]) 最新 次の日記(2010-07-01 [J])» 編集

『よだきがり』のたわごと

2007|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|07|08|09|10|
2011|03|04|
2012|10|12|
2013|04|

2010-02-16 [J] 紙面コーディング

_ IDEに慣れてると駄目だねorz

Rubyでよくある「1〜100までの素数を求める」ってのを書く機会があったので5分で挑戦してみました。

色々アルゴリズムはあるのは知っているのですが、一応単純に高速化とか考えずに配列でチェックしていく方法で実際に書いたコード。

100.times do  |n|
	if (n > 1)
		ck = Array.new
		n.times do |i|
			if (n%i == 0 && i > 1)
				ck << 1
			end
		end
		if (ck.find{|v| v == 1} == nil)
			p n
		end
	end
end

_ 実際にPCで動かしてみたら動きませんorz

timesが0から始まるって忘れてたよorz

実際にもう一回uptoにしてやりなおし

1.upto 100 do  |n|
	if (n > 1)
		ck = Array.new
		1.upto(n-1) do |i|
			if (n%i == 0 && i > 1)
				ck << 1
			end
		end
		if (ck.find{|v| v == 1} == nil)
			p n
		end
	end
end

Rubyらしく書きたいので、意地でもforは使わない

まぁ偶数でとか、初期値は2からでいいんじゃないか?とかは一応「1〜100」という前提があるのでご愛嬌。

今思ったけど100.times使うと、fizzbuzzで致命的なことに気がついたmax値の100が出てこないじゃないか!

ビジネスでphpばかり書いていてRubyの詳細な部分を忘れている自分にガッカリした。

phpでやるとforeachで廻してarray.findの記述が長くなるし変数に$マークや;を書く時間がもったいなかったのでやらなかったのが本音だったりします。(じゃぁendがいらないpythonがいいのか?)

お名前:
E-mail:
コメント: