■
http://paiza.jp/poh/kirishima/result/27d7331ef9f19c91fbccbdd6a7f4856f
テストケース6でタイムオーバー失敗
https://gist.github.com/sh3eys/3fbc605ca6d1220113d7/36955e69289dab5e42e6cccad078ec0836d8ff1b
これを納品したんだけどどこかで効率悪い処理があるんだろう。どうすればいいのかちょっと未だ想像すらつかない
まともにruby書いたのはじめてでいったん満足はしてるけど、期限までもう少しあるからこのままrubyでがんばりたい
きっとあともうひとつテストケース通せれば平均点(いま時点では82点)に並べるだろう
いまのところ疑ってるのは以下のようなポイント
・新たな協力会社が入力されるたびに判定済みの組み合わせも込みでpermutationを毎回全部ぶん回してる(ちょっと認識間違ってる気もしてきた、、
・いったん入力を全て変数にロードしてしてる(速度的に言えば逆にgood?
・新たな協力会社を入力するときにふるいにかけてない(例えば、単価比較できる会社同士であればその時点で候補から外してしまえば組み合わせ捜索がかなり減らせる可能性がある
追記:
そもそもpermutation使うのが間違いでcombinationの方が早い(?
http://ref.xaio.jp/ruby/classes/array/combination
追記2:
やっぱりそうだ。組み合わせじゃなくて順列で捜索してるから余計な時間がかかってる
そもそも数学的な概念をきちんと理解できてなかったので間違った
追記3:
combinationにしたがテストは通らず、そのほか無駄処理を省く程度のすぐ出来る改修をこころみるも結果は同じ。rubyを簡単に高速化するコツがあれば、と調べるもめぼしいものは無さそうなのでいったんrubyはここで区切りをつけることとするhttps://gist.githubusercontent.com/sh3eys/3fbc605ca6d1220113d7/raw/e03cb92a0e63d275c9f4339965c68cb82b5cc7b0/paiza%20online%20hackathon%20201408