Rutas
/
Ruby
Ruby
/
Ejercicios
/
Testamento
Testamento

Testamento

Ejercicio de aprendizaje

Introducción

Una técnica importante para organizar el código es el uso de espacios de nombres. Las clases y los módulos proporcionan espacios de nombres. Dos métodos podrían tener una colisión de nombres, que se puede resolver colocándolos en espacios de nombres distintos. Los espacios de nombres pueden anidarse, lo que puede ayudar a estructurar grandes bases de código. Se accede a los espacios de nombres mediante el operador de resolución de scope ::.

El ejemplo siguiente muestra el uso de dos métodos foo diferentes. Se usan juntos prefijándolos con sus respectivos espacios de nombres.

class MyNamespace
  def self.foo
    44
  end

  class MyInnerNamespace
    def self.baz
      90
    end
  end
end

class MyOtherNamespace
  def self.foo
    -2
  end
end

p MyNamespace::foo + MyOtherNamespace::foo * MyNamespace::MyInnerNamespace::baz  # => -136

Ten en cuenta que los espacios de nombres se interpretan según dónde esté el código que se ejecuta. Para referirte a algo en el espacio de nombres raíz (es decir, fuera de todos los espacios de nombres definidos), empieza por ::.

Por ejemplo:

class Example
  def self.example
    5
  end
end

class MyNamespace

  class Example
    def self.example
      10
    end
  end

  def self.call_example
    p Example::example  # => 10
    p ::Example::example  # => 5
  end
end

Instrucciones

Trabajas para un prestigioso bufete de abogados especializado en gestionar solicitudes testamentarias singulares.

En este ejercicio vas a abrir una misteriosa cámara acorazada. Eres el albacea de la herencia y reunirás los códigos secretos que tres familias han guardado durante mucho tiempo para obtener un número de cuenta y el código correspondiente.

Para evitar que cualquier familia abra la cámara acorazada por sí sola, esta solo puede abrirse combinando sus conocimientos con un modificador secreto que tú conoces por la última voluntad.

Tienes tres tareas, todas relacionadas con ayudar a las familias a abrir la cámara acorazada.

Define un espacio de nombres llamado EstateExecutor. El código de las siguientes tareas debe definirse en el cuerpo del espacio de nombres EstateExecutor.

class SomeName
  # The space between the class/module name
  # and the `end` keyword
  # is called body of the  namespace.
end

Este es tu gran momento. Solo tú tienes la clave del modificador secreto para revelar el número de cuenta secreto.

Define el método assemble_account_number(secret_modifier), que recibe como argumento el modificador secreto Integer y devuelve el número de cuenta ensamblado Integer.

Para obtener el número correcto, tienes que sumar el bank_number_part de cada una de las tres familias.

Las instrucciones del testamento te piden que sumes primero todos los fragmentos azules y después todos los rojos. El código resultante se obtiene multiplicando ambas sumas.

Define el método assemble_code, que devuelve el código resultante combinando los fragmentos de las tres familias en un único resultado Integer. El método no tiene ningún argumento y se basa únicamente en la información de los espacios de nombres correspondientes de las familias.

Creado por

  • @vaeng (ejercicio original en C++)
  • @vaiapatta1985 (transcripción a Ruby)
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Ruby Exercism

¿Listo para empezar Testamento?

Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.