Datos personales

domingo, 5 de enero de 2014

Benchmark Ruby Special Pythagorean Triplet

More info about Problem 9

More info about Benchmark

System Values
Ubuntu: Release 12.04 (precise) 32-bit
Kernel Linux 3.5.0-45-generic
Processor : Intel® Pentium(R) Dual CPU T2330 @ 1.60GHz × 2
Memory: 2.0 GiB

#!/usr/bin/ruby
require 'benchmark'
class PythagoreanTriplet

  def square val
    val * val
  end
  
  def add_square(a,b)
    square(a) + square(b)
  end

  def triplet(a,b,c)
    square(c) == add_square(a,b) ? true : false
  end

  def triplet_addition(a,b,c)
    a+b+c 
  end

  def get_product_abc
    for a in 0..500
      for b in 0..500
        for c in 0..500
          if a < b && b < c
            triplet(a,b,c) ? find = triplet_addition(a,b,c) : find = nil
            printf '%d - %d - %d ', a,b,c if find == 1000
            break if find == 1000
          end
        end
        break if find == 1000
      end
      break if find == 1000
    end
  end

end

pt = PythagoreanTriplet.new
puts Benchmark.measure { pt.get_product_abc }

Results

No break statement

200 - 375 - 425  
42.950000   0.170000  43.120000 ( 43.553589) <- Time

Break statement

200 - 375 - 425  
25.200000   0.040000  25.240000 ( 25.396476) <- Time

No hay comentarios:

Publicar un comentario