=====1=====

(2)を四番まで


=====2=====

food = Hash.new
foodex = Hash.new


open("foods.txt","r:utf-8") do |foods|
  while line = foods.gets
    if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/ =~ line
      food[$1] = [$2.to_i,$3.to_i,$4.to_i,$5] 
      foodex[$1] = [$2.to_i,$3.to_i,$4.to_i,$5] 
    end
  end
end

print("商品選択  商品A:0 商品B:1 商品C:2\n")
x = gets.chomp!.to_i
print"-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---\n"

i = 0
a = 0
b = 0
o = 0
s = 0
r = 0
e = 0
top10 = Hash.new

for n in food.keys.sort {|a, b| food[b][x] <=> food[a][x]}
  if i < 10
  result =  sprintf("%10s%8d%8d%8d%8s\n",
              n,
              food[n][0], food[n][1], food[n][2],
              food[n][3])
  puts result
  i += 1

    if food[n][3] == "住宅街A"
      a += 1
    elsif food[n][3] == "住宅街B"
      b += 1
    elsif food[n][3] == "オフィス街"
      o += 1
    elsif food[n][3] == "学校"
      s += 1
    elsif food[n][3] == "幹線道路"
      r += 1
    else
      e += 1
    end

  end

end

besum = 0
afsum =0

if a >= 5
  
  print("この商品は住宅街Aの店舗で売り上げが多いため、高齢者に絞った広告を推奨する。\n")

    for p in food.keys do
    if food[p][3] == "住宅地A"
      foodex[p][x] = food[p][x] * 1.5
    else
      foodex[p][x] = food[p][x] * 1.1
    end
    besum += food[p][x]
    afsum += foodex[p][x]
  end

  printf("高齢者をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)

elsif b >= 5
  
  print("この商品は住宅街Bの店舗で売り上げが多いため、若者に絞った広告を推奨する。\n")

  for p in food.keys do
    if food[p][3] == "住宅地B"
      foodex[p][x] = food[p][x] * 1.5
    else
      foodex[p][x] = food[p][x] * 1.1
    end
    besum += food[p][x]
    afsum += foodex[p][x]
  end

  printf("若者をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)

elsif o >= 5
  
  print("この商品はオフィス街の店舗で売り上げが多いため、会社員に絞った広告を推奨する。\n")

  for p in food.keys do
    if food[p][3] == "オフィス街"
      foodex[p][x] = food[p][x] * 1.5
    else
      foodex[p][x] = food[p][x] * 1.1
    end
    besum += food[p][x]
    afsum += foodex[p][x]
  end

  printf("会社員をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)
  
elsif s >= 5
  
  print("この商品は学校の店舗で売り上げが多いため、学生に絞った広告を推奨する。\n")

    for p in food.keys do
    if food[p][3] == "学校"
      foodex[p][x] = food[p][x] * 1.5
    else
      foodex[p][x] = food[p][x] * 1.1
    end
    besum += food[p][x]
    afsum += foodex[p][x]
  end

  printf("学生をターゲットとして絞った場合売り上げが%d個から%d個へ増加することが予想される。\n", besum,afsum)

else
  print("ターゲットを絞る必要がない。\n")

    for p in food.keys do

    foodex[p][x] = food[p][x] * 1.15
    besum += food[p][x]
    afsum += foodex[p][x]

  end

  printf("売り上げは%d個から%d個へ増加することが予想される。\n", besum,afsum)
end


=====3=====

1.
商品選択  商品A:0 商品B:1 商品C:2
0
-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---
      0025    1405     501    1473    住宅街A
      0002    1393    1340    1206   オフィス街
      0014    1329     950    1483    住宅街A
      0008    1326     868     858    住宅街A
      0004    1260    1362     825   オフィス街
      0027    1218     322     858    住宅街A
      0020    1190    1307     179   オフィス街
      0021    1145    1375    1416    住宅街B
      0007    1143     555    1186    幹線道路
      0010    1137     924    1084    住宅街B
ターゲットを絞る必要がない。
売り上げは24727個から28436個へ増加することが予想される。

2.
商品選択  商品A:0 商品B:1 商品C:2
1
-店舗コード-+-商品A-+-商品B-+-商品C--+-立地---
      0024     175    1495     446   オフィス街
      0021    1145    1375    1416    住宅街B
      0004    1260    1362     825   オフィス街
      0002    1393    1340    1206   オフィス街
      0017     849    1321    1214    住宅街B
      0020    1190    1307     179   オフィス街
      0023     348    1268    1017    幹線道路
      0029     509    1168     595    住宅街B
      0011     394    1134     545    幹線道路
      0006     550    1024     593   オフィス街
この商品はオフィス街の店舗で売り上げが多いため、会社員に絞った広告を推奨する。
会社員をターゲットとして絞った場合売り上げが24367個から29521個へ増加することが予想される。


=====4=====

1~25はopenメソッドを使いファイルのデータをハッシュに入力し、これから使う変数を指定している。
27ではsortを使い、ハッシュを並べ替え、28~34で上位10個だけが表示されるようにしている。
36~50ではトップ10店舗のうち同じ店舗が何個あるか確認している。
57以降は36~50で確認した店舗数を条件としたif分でどの客層をターゲットとするかをprintで提案した。
さらに課題4番の条件をもとに、配列と倍率を使って計算し合計を求めた。
最後にもとの売り上げ数を期待売り上げ数をprintで表示した。


=====5=====

キーとバリューを使った配列は苦手。
値を何度も使っているので変数化、条件分岐をつかってもっと短く書けそうだったが、分からなくなったのであきらめた。