------ extPart_000_0117_01C8735C.CD2F6540 Content-Type: text/plain; formatðïwed; charset so-8859-1"; reply-type iginal Content-Transfer-Encoding: 7bit From: "ThoML" <micathom / gmail.com> > @bill >> Would be interesting to calculate how much my crude hack tends to >> deviate from the perfect solution(s). > > You might be more interested in speed. Hi Thomas, I wasn't able to benchmark your solution because I couldn't find the #combination method? These are the times I get running the other solutions, 10 runs of 1000 points each. Each run, every solution is fed the exact same point data. $ ruby 157_benchmark.rb user system total real FRANK 23.469000 0.297000 23.766000 ( 23.781000) JUSTIN 6.765000 0.000000 6.765000 ( 6.812000) LIONEL 5.704000 0.000000 5.704000 ( 5.703000) DOUG 3.797000 0.031000 3.828000 ( 3.829000) PHILIPP 1.390000 0.016000 1.406000 ( 1.422000) BILL 0.281000 0.000000 0.281000 ( 0.281000) Looks like my speed is good... Still curious how my accuracy compares though... :) (Benchmark code is attached...) Regards, Bill ------ extPart_000_0117_01C8735C.CD2F6540 Content-Type: application/octet-stream; name57_benchmark.rb" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename57_benchmark.rb" require 'benchmark' module PHILIPP ; eval(File.read('157_philipp_hofmann.rb')) ; end module LIONEL ; eval(File.read('157_lionel_bouton.rb')) ; end module THOMAS ; eval(File.read('157_thomas_ml.rb')) ; end module DOUG ; eval(File.read('157_doug_seifert.rb')) ; end module FRANK ; eval(File.read('157_frank_fischer.rb')) ; end module JUSTIN ; eval(File.read('157_justin_ethier.rb')) ; end module BILL ; eval(File.read('157_smallest_circle.rb')) ; end namespaces # THOMAS, # points.combination ?? FRANK, JUSTIN, LIONEL, DOUG, PHILIPP, BILL ] # Some folks implemented generate_samples differently, # but we want to run all solutions on the same dataset. # We'll use an implementation equivalent to that # provided by the quiz author: [rand, rand] num_runs 0 num_samples 000 def generate_samples(mod, coords) coords.map {|xy| mod::Point.new(*xy)} end # Pregenerate different point data for successive runs. # (All solutions are fed the same point data per run.) pointsets } namespaces.each do |mod| pointsets[mod.name] 1..num_runs).map do point_coords 1..num_samples).map {[rand, rand]} generate_samples(mod, point_coords) end end solutions } namespaces.each {|mod| solutions[mod.name] lass.new { include mod }.new} label_width amespaces.map {|mod| mod.name.length}.max Benchmark.bm(label_width) do |x| namespaces.each do |mod| name od.name solution olutions[name] x.report(name) do num_runs.times do |i| points ointsets[name][i] solution.encircle(points) end end end end ------ extPart_000_0117_01C8735C.CD2F6540--