Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/08/2014, 20:32
croelanjr
 
Fecha de Ingreso: agosto-2014
Mensajes: 68
Antigüedad: 9 años, 8 meses
Puntos: 1
Respuesta: Otro Arreglo mas

Amigos Rubinos,
Me salio las dos ultimas tests me salio bien, cuando es F esta saliendo mal , y cuando es punto(.) quiere decir que salio bien. ahora bien he llegado hasta la cantidad de poblacion es mayor en el primer test, lo unico que no logro es que la cantidad de poblacion pertenece a un pais que le debe llamar o deber el resultado. y el otro test es lo mismo pero de menor a mayor, ahora lo que no puedo encontrar la solucion que la cantidad de poblacion es de menor a mayor sea en una cadena de paises. le paso la solucion de un avance, si algunos de ustedes tenga la voluntad de indicarme en que me he fallado o indicarme que me falta.
Código ruby:
Ver original
  1. #encoding:UTF-8
  2. def paisConMasPoblacion(muestras)
  3.       muestra = muestras.collect {|x,y| y}
  4.       mas_poblacion = muestra.sort.reverse
  5.       poblaciones = mas_poblacion[0]
  6.       indice = 0
  7.         for i in 0...muestras.size
  8.             if poblaciones < muestra[i]
  9.                 poblaciones = muestra[i]
  10.                 indice = i         
  11.             end
  12.         end
  13.       #puts poblaciones
  14.       paises = muestras.sort {|x,y| x <=> y}
  15.       #puts paises
  16.       puts paises.reverse[indice][0]
  17.       #return paises[indice][0]
  18. end
  19.  
  20. def ordenarPorPoblacion(muestras)
  21.         muestra = muestras.collect {|x,y| y}
  22.         menos_poblacion = muestra.sort
  23.         poblaciones = menos_poblacion[0]
  24.         indice = 0
  25.         for i,j in 0...muestras.size
  26.             if poblaciones > muestra[i]
  27.                 poblaciones = muestra[i]
  28.                 i = i + 1
  29.                 indice = i         
  30.             end
  31.         end
  32.         paises = muestras.sort {|x,y| x <=> y}
  33. end
  34.  
  35. def poblacionPromedio(muestras)
  36.     total = 0.0
  37.     cantidad = muestras.collect {|x,y| y}
  38.     for i in 0...muestras.size
  39.         total = total + cantidad[i]
  40.     end
  41.     return (total / muestras.size).round(2)
  42. end
  43.  
  44. def desviacionEstandar(muestras)
  45.     promedio = poblacionPromedio(muestras)
  46.     bessel = muestras.size - 1
  47.     cantidad = muestras.collect {|x,y| y}
  48.     suma_total = 0.0
  49.     for i in 0...muestras.size
  50.         suma_total = suma_total + (cantidad[i] - promedio.round(2)) ** 2
  51.     end
  52.     return (Math.sqrt(suma_total / bessel)).round(2)  # el comando de raiz cuadrada
  53. end
  54.  
  55. #--- zona de test ----
  56.  
  57. def test_paisConMasPoblacion
  58.     muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
  59.     muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
  60.     muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
  61.    
  62.     print validate('Belarus', paisConMasPoblacion(muestra1))
  63.     print validate('Czech Republic', paisConMasPoblacion(muestra2))
  64.     print validate('Germany', paisConMasPoblacion(muestra3))
  65. end
  66.  
  67. def test_ordenarPorPoblacion
  68.     muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
  69.     muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
  70.     muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
  71.     print validate(['Albania','Andorra','Austria','Bosnia and Herzegovina','Belgium','Belarus'], ordenarPorPoblacion(muestra1))
  72.     print validate(['Faroe Islands','Estonia','Croatia','Denmark','Bulgaria','Czech Republic'], ordenarPorPoblacion(muestra2))
  73.     print validate(['Gibraltar','Finland','Hungary','Greece','France','Germany'], ordenarPorPoblacion(muestra3))
  74. end
  75.  
  76. def test_poblacionPromedio
  77.     muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
  78.     muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
  79.     muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
  80.     print validate(5227869.0,   poblacionPromedio(muestra1))
  81.     print validate(5115151.0,   poblacionPromedio(muestra2))
  82.     print validate(27921449.17, poblacionPromedio(muestra3))
  83. end
  84.  
  85. def test_desviacionEstandar
  86.     muestra1 = [['Albania',28750],['Andorra',72766],['Austria',8023244],['Belarus',10415973],['Belgium',10170241],['Bosnia and Herzegovina',2656240]]
  87.     muestra2 = [['Bulgaria',8612757],['Croatia',5004112],['Czech Republic',10321120],['Denmark',5249632],['Estonia',1459428],['Faroe Islands',43857]]
  88.     muestra3 = [['Finland',5105230],['France',58317450],['Germany',83536115],['Gibraltar',28765],['Greece',10538594],['Hungary',10002541]]
  89.     print validate(4886241.63, desviacionEstandar(muestra1))
  90.     print validate(3961012.73, desviacionEstandar(muestra2))
  91.     print validate(34463721.6, desviacionEstandar(muestra3))
  92. end
  93.  
  94.  
  95. def validate (expected, value)
  96.  expected == value ? "." : "F"
  97. end
  98.  
  99. def test
  100.    
  101.   puts "Test de prueba del programa"
  102.   puts "---------------------------"
  103.   test_paisConMasPoblacion
  104.   test_ordenarPorPoblacion
  105.   test_poblacionPromedio
  106.   test_desviacionEstandar
  107.  
  108.   puts " "
  109. end
  110. test