Source

miuler-katapotter / src / main / scala / com / mdp / potter / LibrosPotter.scala

package com.mdp.potter

class LibrosPotter {
  
  private var libros = Map[Int, Int]()
  private var canasta = Map[Int, Int](1->0, 2->0, 3->0, 4->0, 5->0, 6->0, 7->0)
  
  
  def libro1 = libros(1)
  def libro1_= (cantidad:Int):Unit = libros += 1 -> cantidad
  
  def libro2 = libros(2)
  def libro2_= (cantidad:Int):Unit = libros += 2 -> cantidad
  
  def libro3 = libros(3)
  def libro3_= (cantidad:Int):Unit = libros += 3 -> cantidad
  
  def libro4 = libros(4)
  def libro4_= (cantidad:Int):Unit = libros += 4 -> cantidad
  
  def libro5 = libros(5)
  def libro5_= (cantidad:Int):Unit = libros += 5 -> cantidad
  
  def libro6 = libros(6)
  def libro6_= (cantidad:Int):Unit = libros += 6 -> cantidad
  
  def libro7 = libros(7)
  def libro7_= (cantidad:Int):Unit = libros += 7 -> cantidad
  
  
  def costo = {
    var _libros = Map[Int, Int]()
    _libros ++= libros

    _libros = cantidadLibros(5, _libros)
    _libros = cantidadLibros(4, _libros)
    _libros = cantidadLibros(3, _libros)
    _libros = cantidadLibros(2, _libros)
    _libros = cantidadLibros(1, _libros)
    
    canasta(5)*5*8*0.80 + canasta(4)*4*8*0.85 + canasta(3)*3*8*0.90 + canasta(2)*2*8*0.95 + canasta(1)*8
  }
  
  private def cantidadLibros(coleccion:Int, _libros:Map[Int, Int]):Map[Int, Int] = {
    if (_libros.keys.size==coleccion) {
      canasta = canasta.updated(coleccion, canasta(coleccion)+1)
      cantidadLibros(coleccion, _libros map(value => { value._1 -> (value._2-1) } ) filter(value => value._2>0))
    } else {
      _libros
    }
  }
  
}