ぼちぼち散歩

Rubyで小町算

続きまして,1?9までの数字の間に適当に+,-,*,/を挟んで答えを100にする小町算をRubyでやってみました.

class Komachi
	def initialize
		@result = []
		@reg = /(\+|\-|\*|\/)[2-9]/
		calc()
		calc('-1')
	end
	
	attr_reader :result
	
	def calc(string = '1', n = 2)
		if n == 10
			@result.push(string+"=100") if eval(string.gsub(@reg, '.0\&')) == 100
		else
			['+', '-', '*', '/', ''].each do |cal|
				calc(string + cal + n.to_s, n + 1)
			end
		end
	end
end

komachi = Komachi.new()

komachi.result.each{|s| puts s}
puts komachi.result.size.to_s + '個発見!'

結果は別ファイルにしました.プログラムがあってれば,100になるパターンは162個あるようです.(,)とか累乗とか含めだすともっとありそうですが,めんどくさそうなのでやめておきます.

スポンサーサイト

2006/07/23 19:26 | Ruby | トラックバック(0) | コメント(0)

ページの先頭へ

コメント

コメントの投稿


トラックバック

トラックバックURL
http://relaxedcolumn.blog8.fc2.com/tb.php/76-ea50a49c

トップページへ