roberto/air-conditioning-system-tbjr

View on GitHub
lib/regulador.rb

Summary

Maintainability
A
0 mins
Test Coverage
# encoding: UTF-8

module ACME
  class Regulador
    TOLERANCIA  = 2.0
    CUSTO_USO   = 0.1
    CUSTO_LIGAR = 0.5

    # "A função que você precisa implementar deverá ter o seguinte modelo:
    # refrigera(temp_atual, temp_desejada, ...)"
    def refrigera(temperatura, temperatura_ideal)
      custo = 0.0

      maxima_aceitavel = temperatura_ideal + TOLERANCIA
      minima_aceitavel = temperatura_ideal - TOLERANCIA

      if temperatura > maxima_aceitavel
        custo += CUSTO_LIGAR

        begin
          Hardware.reduz_um_grau
          temperatura -= 1
          custo += CUSTO_USO
        end while (temperatura >= minima_aceitavel + 1)
      end

      # "A sua função deve ainda retornar uma tupla com
      # a temperatura final e o custo da redução de temperatura."
      [temperatura, custo]
    end
  end
end