Äó½Ð²ÝÂê¡§03²óÌÜ¥ì¥Ý¡¼¥È
ËÜʸ¡§
­¡	Ruby²Û»ÒÊÞ¡¢¤ª²Û»Ò
­¢	4ÈÖ¤Þ¤Ç
­£
£±¡¥	#!/usr/koeki/bin/ruby
£²¡¥	# -*- coding: utf-8 -*-
£³¡¥	
£´¡¥	total = 0
£µ¡¥	
£¶¡¥	kasi = Hash.new(0)
£·¡¥	
£¸¡¥	open("kasi.csv","r:utf-8") do |data|
£¹¡¥	  while line = data.gets
£±£°¡¥	    if /(\S+)\s+(\d+)\s+(\d+)/ =~ line
£±£±¡¥	      kasi[$1] = [$2.to_i,$3.to_i]
£±£²¡¥	    end
£±£³¡¥	  end
£±£´¡¥	end
£±£µ¡¥	
£±£¶¡¥	while true
£±£·¡¥	  print "²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)\n"
£±£¸¡¥	  for goods in kasi.keys
£±£¹¡¥	    printf("%s  ",goods)
£²£°¡¥	  end
£²£±¡¥	  print"\n"
£²£²¡¥	  
£²£³¡¥	  kau = gets.chomp!
£²£´¡¥	  money = kasi[kau]
£²£µ¡¥	  
£²£¶¡¥	  if kau == "exit"
£²£·¡¥	    break
£²£¸¡¥	  end
£²£¹¡¥	  
£³£°¡¥	  if money == 0
£³£±¡¥	    printf("¡Ö%s¡×¤Î¥Ç¡¼¥¿¤Ï¤¢¤ê¤Þ¤»¤ó\n", kau)
£³£²¡¥	    redo
£³£³¡¥	  else
£³£´¡¥	    printf("¡Ö%s¡×¤ÎÃÍÃʤÏ%d±ß¤Ç¤¹\n", kau, money[0])
£³£µ¡¥	  end
£³£¶¡¥	  
£³£·¡¥	  print "²¿¸ÄÇ㤤¤Þ¤¹¤«?\n"
£³£¸¡¥	  kosuu = gets.chomp!.to_i
£³£¹¡¥	  
£´£°¡¥	  if kosuu > money[1]
£´£±¡¥	    printf("¤´¤á¤ó¤Ê¤µ¤¤¡¢¡Ö%s¡×¤Îºß¸Ë¤Ï»Ä¤ê%d¸Ä¤·¤«¤Ê¤¤¤Ç¤¹¡£Â¾¤Î¿ôÎ̤Ǥª´ê¤¤¤·¤Þ¤¹¡£\n",kau,money[1])
£´£²¡¥	    redo
£´£³¡¥	  end
£´£´¡¥	  
£´£µ¡¥	  money[1] -= kosuu
£´£¶¡¥	  
£´£·¡¥	  goukei = money[0] * kosuu
£´£¸¡¥	  printf("¹ç·×%d±ß¤Ç¤¹¡£\n",goukei)
£´£¹¡¥	        
£µ£°¡¥	  total += goukei
£µ£±¡¥	  
£µ£²¡¥	end
£µ£³¡¥	
£µ£´¡¥	
£µ£µ¡¥	printf("Á´ÂΤιç·×¤ÎÃÍÃʤÏ%d±ß¤Ç¤¹¡£¤ªÇ㤤¾å¤²¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£\n",total)

¡ÊCSV¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¡Ë
¤¢¤á 20 50
¥Á¥ç¥³ 100 20
¤ï¤¿¤¢¤á 250 10
¥É¡¼¥Ê¥Ä 150 10
¥»¥é¥ß¥É3·»Äï 800 3
¤»¤ó¤Ù¤¤ 50 20
¥¦¥¨¥Ï¡¼¥¹ 120 20
¤ª¤ä¤Ä¥é¡¼¥á¥ó 30 10
¥¼¥ê¡¼ 20 20
¥°¥ß 130 5

­¤²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
¤¢¤á
¡Ö¤¢¤á¡×¤ÎÃÍÃʤÏ20±ß¤Ç¤¹
²¿¸ÄÇ㤤¤Þ¤¹¤«?
5
¹ç·×100±ß¤Ç¤¹¡£
²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
¤¢¤á
¡Ö¤¢¤á¡×¤ÎÃÍÃʤÏ20±ß¤Ç¤¹
²¿¸ÄÇ㤤¤Þ¤¹¤«?
100
¤´¤á¤ó¤Ê¤µ¤¤¡¢¡Ö¤¢¤á¡×¤Îºß¸Ë¤Ï»Ä¤ê45¸Ä¤·¤«¤Ê¤¤¤Ç¤¹¡£Â¾¤Î¿ôÎ̤Ǥª´ê¤¤¤·¤Þ¤¹¡£
²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
¤¢¤á
¡Ö¤¢¤á¡×¤ÎÃÍÃʤÏ20±ß¤Ç¤¹
²¿¸ÄÇ㤤¤Þ¤¹¤«?
10
¹ç·×200±ß¤Ç¤¹¡£
²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
¤»¤ó¤Ù¤¤
¡Ö¤»¤ó¤Ù¤¤¡×¤ÎÃÍÃʤÏ50±ß¤Ç¤¹
²¿¸ÄÇ㤤¤Þ¤¹¤«?
5
¹ç·×250±ß¤Ç¤¹¡£
²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
¤¢¤¤¤¹
¡Ö¤¢¤¤¤¹¡×¤Î¥Ç¡¼¥¿¤Ï¤¢¤ê¤Þ¤»¤ó
²¿¤òÇ㤤¤Þ¤¹¤«?(Çã¤ï¤Ê¤¤¾ì¹ç¤Ïexit)
¤¢¤á  ¥Á¥ç¥³  ¤ï¤¿¤¢¤á  ¥É¡¼¥Ê¥Ä  ¥»¥é¥ß¥É3·»Äï  ¤»¤ó¤Ù¤¤  ¥¦¥¨¥Ï¡¼¥¹  ¤ª¤ä¤Ä¥é¡¼¥á¥ó  ¥¼¥ê¡¼  ¥°¥ß
exit
Á´ÂΤιç·×¤ÎÃÍÃʤÏ550±ß¤Ç¤¹¡£¤ªÇ㤤¾å¤²¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£

­¥	6¹ÔÌÜ¡¢kasi¤¬¶õ¤Î¥Ï¥Ã¥·¥åÊÑ¿ô¤Ç¤¢¤ë¤³¤È¤òÀë¸À¡£ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤key¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢value¤È¤·¤Æ¡Ê¡Ë¤ÎÃæ¤ÎÃͤ¬ÊÖ¤µ¤ì¤ë¡£
£¸¹ÔÌÜ¡¢open¥á¥½¥Ã¥É¤Ç¡Ö¾¦ÉÊ̾¡¢ÃÍÃÊ¡¢ºß¸Ë¿ô¡×¤¬½ñ¤«¤ì¤¿csv¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ß¡¢data¤Ë³ÊǼ¡£
£¹¹ÔÌÜ¡¢¥Õ¥¡¥¤¥ë¤«¤é½ç¼¡ÆÉ¤ß¹þ¤à¡£
10¹ÔÌÜ¡¢Àµµ¬É½¸½¡£
11¹ÔÌÜ¡¢Àµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤µ¤»$1~¤Ç¼è¤ê½Ð¤·³Æ¥Ï¥Ã¥·¥å¤ËÂåÆþ¡£
18¡Á20¹ÔÌÜ¡¢kasi¤È¤¤¤¦¥Ï¥Ã¥·¥åÊÑ¿ô¤Îkey¤ÎÉôʬ¤ò½ç¼¡goods¤È¤¤¤¦ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤æ¤­¡¢É½¼¨¤¹¤ë¡£¤³¤Î¥×¥í¥°¥é¥à¤Î¾ì¹çkey¤Ï¾¦ÉÊ̾¤ÎÉôʬ¤Ë¤Ê¤ë¡£
23¹ÔÌÜ¡¢kau¤È¤¤¤¦ÊÑ¿ô¤Ë²¿¤òÇ㤦¤«¡¢É½¼¨¤µ¤ì¤¿¾¦ÉÊ̾¤òÆþÎϤ·¤Æ¤â¤é¤¦¡£
24¹ÔÌÜ¡¢money¤È¤¤¤¦ÊÑ¿ô¤Ëkasi¤Îvalue¡Êkey¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤¿¥Ç¡¼¥¿¡Ë¤òÂåÆþ¡£
kasi[kau]¤Î¤è¤¦¤Ë¡¢[]¤ÎÃæ¤Îʸ»ú¤È·ë¤Ó¤Ä¤±¤é¤ì¤ë¡£Î㤨¤Ðkau¤È¤¤¤¦ÊÑ¿ô¤Ë¥°¥ß¤òÆþ¤ì¤Æ¤¤¤ì¤Ðkasi[¥°¥ß]¤È¤Ê¤ê¡¢money¤Ë¤Ï¥°¥ß¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤¿¥Ç¡¼¥¿¤¬Æþ¤ë¡£
26¡Á28¹ÔÌÜ¡¢¾¦ÉÊ̾¤òÆþÎϤ¹¤ë¤È¤­exit¤ÈÆþÎϤ·¤¿ºÝ¡¢·«¤êÊÖ¤·¤«¤éÈ´¤±¤ë¡£
30¡Á35¹ÔÌÜ¡¢money¤ÎÃͤ¬£°¡¢¤Ä¤Þ¤êÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤key¤¬»ØÄꤵ¤ì¤¿»þ¤Ë¡¢¡ÖÆþÎϤµ¤ì¤¿¥Ç¡¼¥¿¤Ï¸ºß¤·¤Ê¤¤¡×¤È¤¤¤¦»ö¤òɽ¼¨¡£
¤½¤ì°Ê³°¤ÎÃͤÇÃÍÃʤòɽ¼¨¡£
40¡Á43¹ÔÌÜ¡¢kosuu¤ËÆþÎϤµ¤ì¤¿Ãͤ¬money[1]¡Êºß¸Ë¿ô¡Ë¤è¤ê¿¤«¤Ã¤¿¾ì¹ç¡¢ºÆÆþÎϤòÂ¥¤¹¡£money[1]¤È¤¤¤¦¤Î¤Ï¡¢value¤Î¤Ê¤«¤Ë¤Ï¥Ç¡¼¥¿¤¬£²¤ÄÆþ¤Ã¤Æ¤¤¤ë¤¿¤áÇÛÎó¤òÍѤ¤¤ë¤³¤È¤Ç¡¢²¿¸ÄÌܤΥǡ¼¥¿¤«¤ò»ØÄê¤Ç¤­¤ë¡£
45¹ÔÌÜ¡¢ºß¸Ë¤ÏÃíʸ¤¹¤ë¤¿¤Ó¸º¤Ã¤Æ¤¤¤¯¤¿¤ákosuu¤ËÆþÎϤµ¤ì¤¿Ãͤº¤Ä°ú¤¤¤Æ¤¤¤¯¡£
47¹ÔÌÜ¡¢¤½¤Î»þ¤ËÃíʸ¤·¤¿¹ç·×¶â³Û¤òµá¤á¤ë¡£money[0]¤Ïvalue¤Î1ÈÖÌܤΥǡ¼¥¿¤Î¤³¤È¤Ç¤¢¤ë¡£
50¹ÔÌÜ¡¢ºÇ½ªÅª¤Ê¹ç·×¶â³Û¤òµá¤á¤ë¡£

­¦	5Èְʹߤ¬Æñ¤·¤«¤Ã¤¿¡£¥Õ¥¡¥¤¥ë¤ÎÆþ½ÐÎϤò¤Ä¤«¤¨¤ÐÎɤ¤¤È¹Í¤¨¤¿¤¬¡¢ºß¸Ë¿ô¤ò¥Ô¥ó¥Ý¥¤¥ó¥È¤ÇÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤Î¤«¤ï¤«¤é¤Ê¤«¤Ã¤¿¡£¤Þ¤¿Ä©À路¤Æ¤ß¤¿¤¤¡£

źÉÕ¡§
ruby2-2-3.rb
kasi.csv