Guest User

Untitled

a guest
Jul 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. items = {
  2. 1 => {
  3. "title" => "Red Apple",
  4. "spec" => {
  5. "sugar" => 220,
  6. "vitc" => 3,
  7. "water" => 100
  8. }
  9. },
  10. 2 => {
  11. "title" => "Green Apple",
  12. "spec" => {
  13. "sugar" => 110,
  14. "vitc" => 4,
  15. "water" => 100
  16. }
  17. },
  18. 3 => {
  19. "title" => "Orange",
  20. "spec" => {
  21. "sugar" => 180,
  22. "vitc" => 15,
  23. "water" => 300
  24. }
  25. }
  26. }
  27.  
  28. spec_funct = {
  29. "sugar" => ">",
  30. "vitc" => ">",
  31. "water" => ">"
  32. }
  33.  
  34. def min(*args)
  35. return args[0].index(args[0].values.min)
  36. end
  37.  
  38. def max(*args)
  39. return args[0].index(args[0].values.max)
  40. end
  41.  
  42. specs = {}
  43. best = {}
  44.  
  45. items.each do |key,item|
  46. best[key] = 0
  47. unless item == nil
  48. item["spec"].sort.each do |spec|
  49. unless specs.has_key?(spec[0])
  50. specs[spec[0]] = Hash.new()
  51. end
  52. specs[spec[0]][key] = spec[1]
  53. end
  54. end
  55. end
  56.  
  57.  
  58.  
  59. specs.each do |spec|
  60. if spec_funct.has_key?(spec[0])
  61. function = spec_funct[spec[0]]
  62. case function
  63. when ">":
  64. best[max(spec[1])] += 1 if best.has_key?(max(spec[1]))
  65. when "<":
  66. best[min(spec[1])] += 1 if best.has_key?(min(spec[1]))
  67. end
  68. end
  69. end
  70.  
  71. items.each do |key, item|
  72. puts "#{item["title"]}: #{best[key]}"
  73. end
  74. puts "-------------------"
  75. puts "Won: #{items[best.index(best.values.max)]["title"]}"
Add Comment
Please, Sign In to add comment