Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [開発] [CE] [LTSA] [自動化] [Qt] [OCaml] [TOOLS]
   [3Dプリンタ] [RAA] [Forge]   [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [Java] [EA] [マクロ]

2011-02-01

順列 組み合わせ

順列 組み合わせ - Rubyの魔神 を含むブックマーク はてなブックマーク - 順列 組み合わせ - Rubyの魔神 順列 組み合わせ - Rubyの魔神 のブックマークコメント

【プログラム クイズ】  この問題を解くプログラムを作ってください。誰でも無料で入手可能なら言語は問いません。また、ライブラリなどを使ってもいいです。その場合は、言語やライブラリの入手先のURLも教えてください。それから、VBAは無料じゃありませんが、Excelは、PCを買った時についてきたのでVBAも可とします。 ●式を成り立たせる問題 http://homepage3.nifty.com/sugaku/sisoku.htm

rubyで書いてみました。

operator = ["+","-","*","/","=="]
operator.permutation(5) {|a,b,c,d,e|
	s = "5.0#{a}4.0#{b}3.0#{c}2.0#{d}1.0#{e}0.0"
	begin
		puts s if eval(s)
	rescue
	end
}

答えはこちらです。

5.0-4.0*3.0/2.0+1.0==0.0

5.0==4.0*3.0/2.0-1.0+0.0

Rubyは順列を作る関数や組み合わせを作る関数があるので便利ですね。


順列

http://ref.xaio.jp/ruby/classes/array/permutation

組み合わせ

http://ref.xaio.jp/ruby/classes/array/combination




ついでにこちらもやってみました

○/○○+○/○○+○/○○=1

○の中に1から9までの数字を一回づつつかって、等式を成り立たせよう。

○/○○+○/○○+○/○○=1
operator = ["1","2","3","4","5","6","7","8","9"]
operator.permutation(9) {|a1,a2,a3,a4,a5,a6,a7,a8,a9|
	s = "#{a1}.0/#{a2}#{a3}.0+#{a4}.0/#{a5}#{a6}.0+#{a7}.0/#{a8}#{a9}.0==1.0"
	begin
		puts s if eval(s)
	rescue
	end
}

答えはこちらです。

5.0/34.0+7.0/68.0+9.0/12.0==1.0

5.0/34.0+9.0/12.0+7.0/68.0==1.0

7.0/68.0+5.0/34.0+9.0/12.0==1.0

7.0/68.0+9.0/12.0+5.0/34.0==1.0

9.0/12.0+5.0/34.0+7.0/68.0==1.0

9.0/12.0+7.0/68.0+5.0/34.0==1.0


良く見たら答えは1つでその並び替え分が出ているみたいですね。

5.0/34.0+7.0/68.0+9.0/12.0==1.0

rsc96074rsc960742011/02/02 18:59やっぱり、ruby 最強!(^_^;

grankoyamagrankoyama2011/02/02 19:31おそるべし!るびぃすと!
ポーランドだか、逆ポーランドだか思い出しながら、思い出せず
ちまちまやっていたのが馬鹿みたいに思えた(^_^;

garyogaryo2011/02/02 20:29確かにRubyで書くと「反則では?」と思えるくらい簡単になりますね。c言語だと、順列作ったり、演算子の優先順位考えたりでかなり大変になりますよね。

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20110201