¼ø¶È»ñÎÁ/07
Á°²ó¤Î²ÝÂê¤Ë¤Ä¤¤¤Æ †
Á°²ó¤Î²ÝÂê¤Ï°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤Ã¤¿¡¥
¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀÑ¡¤¹ÔÎó¤È¹ÔÎó¤ÎÀѤò·×»»¤¹¤ë´Ø¿ô¤ò¥×¥í¥°¥é¥ß¥ó¥°
- ¹ÔÎó¤ÏÀµÊý¹ÔÎó¤Î¤ß°·¤¦¤È¤·¤Æ¤ª¤¯
- ¼¡¸µ¤Î°ã¤¤¤Î¥Á¥§¥Ã¥¯¤Ï¤·¤Ê¤¯¤Æ¤â¤è¤¤(¤â¤Á¤í¤ó¤·¤Æ¤â¤è¤¤)
- (¾åµé¼Ô¸þ¤±)¾å¤ÇÄêµÁ¤·¤¿ inner_product ´Ø¿ô¤òÍѤ¤¤Æ¼ÂÁõ¤¹¤ë
¤½¤·¤Æ¡¤4 x 4 ¤Î¹ÔÎó¤òŬÅö¤ËÆó¤Ä¡¤4¼¡¸µ¥Ù¥¯¥È¥ë¤òŬÅö¤Ë°ì¤ÄÍÑ°Õ¤·¤Æ¡¤¤½¤ì¤é¤ËÂФ·¤ÆÀѤη׻»¤¬¤¦¤Þ¤¯¤¤¤¯¤³¤È¤ò³Îǧ¤»¤è¡¥
¤³¤Îʸ¾Ï¤òÆɤà¸Â¤ê °ìÈ̤Πn x n ¹ÔÎó¤ò°·¤¨¤Ê¤¤¤È¤¤¤±¤Ê¤¤ (4 x 4 ¤Ï¤¢¤¯¤Þ¤Ç¤¤Á¤ó¤ÈÆ°¤¯¤³¤È¤Î³ÎǧÍÑ) ¤Î¤Ç¡¤¤½¤ì¤òǰƬ¤Ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤³¤¦¡¥
¤À¤«¤é¡¤¾ò·ï¤òËþ¤¿¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç 4 x 4 ¹ÔÎóÀìÍÑ¤Î¥×¥í¥°¥é¥à¤Ï¼º³Ê ¤Ç¤¢¤ë¡¥»ÄÇ°¤À¤±¤É¤Í¡¥
Á´Âι½Â¤¤ò¹Í¤¨¤ë †
¤¤¤Ä¤â¤Î¤è¤¦¤ËÁ´Âι½Â¤¤ò¹Í¤¨¤ë¡¥
´ðËÜŪ¤Êµ¡Ç½¤È¤·¤Æ¹ÔÎóƱ»Î¤ÎÀѤȹÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀѤÎÆó¤Ä¤¬É¬Íפǡ¤ÎãÂê¤È¤·¤Æ¤½¤ì¤ò¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤¹¤ëËÜʸ¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¤¤Þ¤º¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥ ¤¿¤À¤·¡¤ºÇ½é¤«¤é 4 x 4 ¹ÔÎó¤ò°·¤¦¤Î¤ÏÌÌÅݤʤΤǡ¤¤Þ¤º¤Ï 2 x 2 ¹ÔÎó¤Ê¤É¤Î¡Ö°ìÈÖ¾®¤µ¤ÊÌäÂê¡×¤Ç»î¤¹¤è¤¦¤Ë½ñ¤¤¤Æ¤ª¤¯¡¥
include Math # ¹ÔÎóƱ»Î¤ÎÀÑ: ¹ÔÎóÆó¤Ä¤¬°ú¿ô def mtx_product_mtx(m_a, m_b) # ½ÐÎϤϹÔÎ󡥡֤Ȥꤢ¤¨¤ºÆ°¤¯¤è¤¦¤Ë¡×ºÇ½é¤Î°ú¿ô¤òÊÖ¤·¤Æ¤ª¤¯¡¥ return m_a end # ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀÑ: ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤¬°ú¿ô def mtx_product_vec(m_a, v_x) # ½ÐÎϤϥ٥¯¥È¥ë¡¥¡Ö¤È¤ê¤¢¤¨¤ºÆ°¤¯¤è¤¦¤Ë¡×°ú¿ô¥Ù¥¯¥È¥ë¤òÊÖ¤·¤Æ¤ª¤¯¡¥ return v_x end # ¹ÔÎó¤ò¿Í´ÖÍѤ˽ÐÎϤ¹¤ë def print_mtx(m_a) end # ¥Ù¥¯¥È¥ë¤ò¿Í´ÖÍѤ˽ÐÎϤ¹¤ë def print_vec(v_x) end # °Ê²¼¡¤¥×¥í¥°¥é¥àËÜÂÎ # ¥µ¥ó¥×¥ë¤Î 2 x 2 ÌäÂêÍѥǡ¼¥¿ a = [[1,2], [3,4]] b = [[5,6], [7,8]] x = [10,11] # ¹ÔÎóƱ»Î¤ÎÀѤò·×»» c = mtx_product_mtx(a,b) # ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀѤò·×»» y = mtx_product_vec(a,x) # ²èÌ̤˽ÐÎÏ print_mtx(c) print_vec(y)
µ¡Ç½¤òÁý¤ä¤·¤Æ¤¤¤¯: ·ë²Ì¤ò¤¹¤°¥Á¥§¥Ã¥¯¤Ç¤¤ë¤è¤¦¤Ë¡¤É½¼¨µ¡Ç½¤òÀè¤Ë¼ÂÁõ¤·¤Æ¤ß¤ë †
º£²ó¤Î²ÝÂê¤Ï¹ÔÎó¤Îź»ú¤Î¥º¥ì¤Ê¤É¤Î¤¢¤Á¤³¤Á¤Ë´Ö°ã¤¤¤¬È¯À¸¤·¤ä¤¹¤¤¡¥¤½¤ì¤òºÇ¾®¸Â¤ËÍÞ¤¨¤ë¤¿¤á¤Ë¤âɽ¼¨µ¡Ç½¤¬Áá¤á¤Ë¼ÂÁõ¤µ¤ì¤ë¤È³Ú¤¬½ÐÍ褽¤¦¤À¡¥¤½¤³¤Ç¡¤print_ ´Ø¿ô¤òÀè¤Ë¼ÂÁõ¤·¤è¤¦¡¥
¤Þ¤º¤Ï¡¤¥Ù¥¯¥È¥ë¤Îɽ¼¨¤«¤é¼ê¤òÉÕ¤±¤ë¤Î¤¬´Êñ¤À¤í¤¦¡¥Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
def print_vec(v_x) print("[ ") for i in 1..v_x.size do print(v_x[i-1]," ") end print("]\n") end
¤³¤Î´Ø¿ô¤¬¤Ç¤¤ì¤Ð¡¤¹ÔÎó¤Îɽ¼¨¤Ë¤Ï¤³¤ì¤òÍøÍѤ¹¤ë¤Î¤¬¿¿¤ÃÅö¤Ê¿Í´Ö¤Î»×¹Í¤È¤¤¤¦¤â¤Î¤À¡¥°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
def print_mtx(m_a) for i in 1..m_a.size do print_vec(m_a[i-1]) end end
¤³¤ÎÎã¤Ç¤Ï print_vec ´Ø¿ô¤ò»È¤¨¤Ð print_mtx ´Ø¿ô¤Ç¤Ï¤Û¤È¤ó¤ÉÄã¥ì¥Ù¥ë¤Î¼ÂÁõ¤ò¤·¤Ê¤¯¤ÆÎɤ¤¡¥
¤³¤Î¤è¤¦¤Ë¡¤¡Ö´û¤Ë¥×¥í¥°¥é¥à¤·¤Æ¤¢¤ë¤³¤È¤òÍøÍѤ·¤Æ¥×¥í¥°¥é¥à¤¹¤ë¡×¤³¤È¤ÏÈó¾ï¤Ë½ÅÍפǤ¢¤ë¡¥ ¤Ê¤¼¤Ê¤é¡¤
- Ʊ¤¸¤è¤¦¤Ê¤³¤È¤ò²¿ÅÙ¤â½ñ¤«¤Ê¤¯¤ÆÎɤ¤¤Î¤Ç¡¤¥ß¥¹¤¬Æþ¤ê¹þ¤à³ÎΨ¤¬²¼¤¬¤ë
- ½¤Àµ¤¹¤ë»þ¤Ë¡¤½¤Àµ²Õ½ê¤¬É¬Í׺Ǿ®¸Â¤ÇºÑ¤à
- ¥×¥í¥°¥é¥à¤ÎÃê¾ÝÅÙ¤¬¾å¤¬¤ê¡¤¤è¤ê¤¤Á¤ó¤È¤·¤¿¤â¤Î¤Ë¤Ê¤ë²ÄǽÀ¤¬¹â¤Þ¤ë
¤«¤é¤Ç¤¢¤ë(Don't Repeat Yourself = DRY ¸¶Â§¤Ë¶á¤¤¤«)¡¥¤Þ¤¢´Êñ¤Ë¸À¤¨¤Ð¡¤
¤À¤È»×¤¨¤ÐÎɤ¤¡¥
µ¡Ç½¤òÁý¤ä¤·¤Æ¤¤¤¯: ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀÑ †
¼¡¤Ë´Êñ¤Ê¤Î¤Ï¡¤¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀѤμÂÁõ¤À¤í¤¦¡¥¤³¤ì¤ÏÆâÀѤò»È¤¦¤è¤¦¤Ë¤¹¤ì¤Ð´Êñ¤À¡¥
¤¿¤À¡¤·è¤á¤é¤ì¤¿¼¡¸µ¤Î¥Ù¥¯¥È¥ë¤Î¡Ö¤Ò¤Ê¤¬¤¿¡×¤òÍÑ°Õ¤¹¤ëÊýË¡¤¬¤ï¤«¤é¤Ê¤¤¤È¤¤¤¦¾ì¹ç¤â¤¢¤ë¤À¤í¤¦¤«¤é¡¤¤½¤³¤ò´Ø¿ô¤È¤·¤Æ¡Ö¤È¤ê¤¢¤¨¤º¸å¤Ç¹Í¤¨¤ë¡×¤è¤¦¤Ë¤¹¤ì¤Ð¡¤¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
¿Í´Ö¤ÎǾ¤ß¤½¤Ï¤¢¤ëÄøÅٰʾå¤ÎÊ£»¨¤µ¤ËÂнè¤Ç¤¤Ê¤¤¤Î¤Ç¡¤¤³¤Î¤è¤¦¤Ë¡Ö¸å¤Ç¹Í¤¨¤ëÉôʬ¤òʬΥ¤¹¤ëǽÎϡפÏÈó¾ï¤Ë½ÅÍפÀ¡¥µÞ¤¤¤Ç¿È¤Ë¤Ä¤±¤è¤¦¡¥
¤³¤ì¤â¶¯Ä´¤·¤Æ¤ª¤³¤¦¡¥
Ç¡²¿¤ËÊ£»¨¤µ¤òʬ²ò¤¹¤ë¤«¤¬¥×¥í¥°¥é¥ß¥ó¥°¤Î¡Ö¥¥â¡×¤Ç¤¢¤ë¡¥
# ¥Ù¥¯¥È¥ë¤ÎÆâÀÑ¡¥Á°²ó¤Î¥³¥Ô¡¼ def inner_product(v_a, v_b) sum = 0.0 for i in 1..v_a.size do sum += v_a[i-1]*v_b[i-1] end return sum end # n ¼¡¸µ¥Ù¥¯¥È¥ë¤òºî¤ë def make_vec(n) # ¤µ¤¢¤É¤¦¤¹¤ë? end # ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀÑ: ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤¬°ú¿ô def mtx_product_vec(m_a, v_x) v_y = make_vec(m_a.size) for i in 1..m_a.size do v_y[i-1] = inner_product(m_a[i-1], v_x) end return v_y end
¤½¤·¤Æ¡¤·è¤á¤é¤ì¤¿¼¡¸µ¤Î¥Ù¥¯¥È¥ë¤Î¡Ö¤Ò¤Ê¤¬¤¿¡×¤òÍÑ°Õ¤¹¤ë´Ø¿ô make_vec ¤Ï¤³¤ì¤Þ¤Ç¤ÎÃ챤À¤±¤«¤éºî¤ë¤Ê¤é¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
# n ¼¡¸µ¥Ù¥¯¥È¥ë¤òºî¤ë def make_vec(n) # ¤Þ¤ºÍ×ÁǤ¬¤Ò¤È¤Ä¤â¤Ê¤¤¡Ö¶õ½¸¹ç¡×¤òºî¤ë¡¥ a = [] # Í×ÁÇ 0.0 ¤ò n¸ÄÄɲ乤롥 n.times { a.push(0.0) } # ½ÐÎÏ return a end
(¾åµé¼Ô¸þ¤±) Ruby ¤Îµ¡Ç½¤ò¤¤Á¤ó¤È»È¤Ã¤Æ½ñ¤¯¤Ê¤é¤Ð
# n ¼¡¸µ¥Ù¥¯¥È¥ë¤òºî¤ë def make_vec(n) return Array.new(n){0.0} end
¤È¤¤¤¦´¶¤¸¤Ë¤Ê¤ë¤À¤í¤¦¡¥
¤µ¤Æ¡¤¤³¤¦¤¹¤ë¤³¤È¤Ç¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀѤϤ¤Á¤ó¤È·×»»¤Ç¤¤ë¤Ï¤º¤Ç¤¢¤ë¤«¤é¡¤¼ÂºÝ¤ËÆ°¤«¤·¤Æ¤ß¤ë¤È¡¤
[ 1 2 ]
[ 3 4 ]
[ 32.0 74.0 ]
¤È¤¤¤¦½ÐÎϤ¬ÆÀ¤é¤ì¡¤³Î¤«¤Ë 2 x 2 ¹ÔÎó¤È¥Ù¥¯¥È¥ë¤ÎÀѤ¬·×»»¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬³Îǧ¤Ç¤¤ë¡¥
µ¡Ç½¤òÁý¤ä¤·¤Æ¤¤¤¯: ¹ÔÎó¤È¹ÔÎó¤ÎÀÑ †
¤µ¤Æ¡¤ºÇ¸å¤Ï¹ÔÎó¤È¹ÔÎó¤ÎÀѤǤ¢¤ë¡¥¤³¤ì¤â¡¤¹ÔÎó¤ò¥Ù¥¯¥È¥ë¤Î½¸¤Þ¤ê¤È»×¤¨¤ÐÆñ¤·¤¯¤Ê¤¤¡¥
¤¢¤È¤Ï¡¤¹ÔÎ󤫤é¹Ô¥Ù¥¯¥È¥ë¡¤Îó¥Ù¥¯¥È¥ë¤òÈ´¤½Ð¤¹Áàºî¤ò¤·¤Ã¤«¤ê¹Ô¤¨¤ì¤Ð¡¤ÆâÀѤ¬»È¤¨¤ë¡¥
¤À¤«¤é¡¤Î㤨¤Ð¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
# Îó¥Ù¥¯¥È¥ë¤òÈ´¤½Ð¤¹ def col_vec(m_a, k) v_y = make_vec(m_a.size) # ¶ñÂÎŪ¤Êµ¡Ç½¤Ï¤¢¤È¤Ç¼ÂÁõ¤¹¤ë return v_y end # n x m ¹ÔÎó¤òºî¤ë def make_mtx(n,m) # ¤µ¤¢¤É¤¦¤¹¤ë? end # ¹ÔÎóƱ»Î¤ÎÀÑ: ¹ÔÎóÆó¤Ä¤¬°ú¿ô def mtx_product_mtx(m_a, m_b) m_c = make_mtx(m_a.size,m_a.size) # ÆâÀѤò»È¤¨¤Ð¡¤¤¢¤È¤Ï¿ô³Ø¤ÎÄêµÁÄ̤ꡥ for i in 1..m_a.size do for j in 1..m_a.size do m_c[i-1][j-1] = inner_product(m_a[i-1],col_vec(m_b,j)) end end return m_c end
¤Ç¡¤¤³¤³¤ÇɬÍפˤʤä¿Æó¤Ä¤Î´Ø¿ô¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¡¥
¤Þ¤º¤Ï¡Ö¹ÔÎ󤫤éÎó¥Ù¥¯¥È¥ë¤òÈ´¤½Ð¤¹¡×µ¡Ç½¤À¤¬¡¤¤³¤ì¤Ï´Êñ¤Ç¡¤¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤ÐÎɤ¤¡¥
def col_vec(m_a, k) v_y = make_vec(m_a.size) for i in 1..m_a.size do v_y[i-1] = m_a[i-1][k-1] end return v_y end
»Ä¤Ã¤¿¡Ö¹ÔÎó¤Î¤Ò¤Ê¤¬¤¿¤òºî¤ë¡×µ¡Ç½¤Ï¡¤¥Ù¥¯¥È¥ë¤òºî¤ëµ¡Ç½¤ò»È¤Ã¤Æ
¤È¤¹¤ì¤Ð¤è¤¤¡¥´Êñ¤¹¤®¤ÆÇϼ¯¤Ë¤µ¤ì¤Æ¤¤¤ëµ¤Ê¬¤âͤ뤫¤â¤·¤ì¤Ê¤¤¤±¤ì¤É¤â¡¥
(¾åµé¼Ô¸þ¤±) Ruby ¤Îµ¡Ç½¤ò¤¤Á¤ó¤È»È¤Ã¤Æ½ñ¤¯¤Ê¤é¤Ð
# n x m ¹ÔÎó¤òºî¤ë def make_mtx(n,m) return Array.new(n){ Array.new(m){0.0} } end
¤È¤¤¤¦´¶¤¸¤Ë¤Ê¤ë¤À¤í¤¦¡¥
¤µ¤Æ¡¤¤³¤ì¤Ç¤³¤Îµ¡Ç½¤â´°À®¤·¤¿¡¥»î¤·¤ËÆ°¤«¤·¤Æ¤ß¤ë¤È¡¤
[ 19.0 22.0 ]
[ 43.0 50.0 ]
[ 32.0 74.0 ]
¤È¤Ê¤ê¡¤³Î¤«¤ËÀµ¤·¤¯Æ°¤¤¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ë¡¥
ÌäÂê¤òÂ礤á¤ËÊѹ¹: ºÇ½ªÃʳ¬¤Ø †
¤µ¤Æ¡¤¤¤Á¤ó¤ÈÆ°¤¤¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ë¤Î¤Ç¡¤ÌäÂê¤ò»Ø¼¨¤µ¤ì¤¿ 4 x 4 ¤Ë¼è¤ê´¹¤¨¤è¤¦¡¥
¤Þ¤¿¡¤½ÐÎϤ⾯¤·Æɤߤ䤹¤¯¤·¤¿¤¤¡¥
¤È¤¤¤¦¤³¤È¤Ç¡¤Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡¥
¤½¤·¤Æ¡¤¤³¤ì¤òÆ°¤«¤¹¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡¥
¼ê·×»»¤Ê¤É¤Ç¡¤³Î¤«¤ËÀµ¤·¤¤·ë²Ì¤Ç¤¢¤ë¤³¤È¤¬³Î¤«¤á¤é¤ì¤ë¡¥
A =
[ 1 2 3 4 ]
[ 5 6 7 8 ]
[ 9 10 11 12 ]
[ 13 14 15 16 ]
B =
[ 17 18 19 20 ]
[ 21 22 23 24 ]
[ 25 26 27 28 ]
[ 29 30 31 32 ]
A B =
[ 250.0 260.0 270.0 280.0 ]
[ 618.0 644.0 670.0 696.0 ]
[ 986.0 1028.0 1070.0 1112.0 ]
[ 1354.0 1412.0 1470.0 1528.0 ]
x =
[ 3 4 5 6 ]
A x =
[ 50.0 122.0 194.0 266.0 ]
´°À®¤·¤¿¥×¥í¥°¥é¥à¤ÏŤ¤¤¬¡¤¤³¤¦¤·¤¿¤ä¤êÊý¤Ç½ç½øΩ¤Æ¤Çºî¤ì¤ÐÆñ¤·¤¤¤³¤È¤Ï²¿¤â̵¤¤¡¥
º£²ó¤Î²ÝÂ꤬Æñ¤·¤¤¤È»×¤Ã¤¿¿Í¤Ï¡¤Á´Âι½Â¤¤ò¹Í¤¨¤º¤Ë¤Ê¤ó¤È¤Ê¤¯¥×¥í¥°¥é¥ß¥ó¥°¤·¤è¤¦¤È¤·¤¿¤Î¤Ç¤Ï¤Ê¤¤¤À¤í¤¦¤«¡¥¤½¤Î¤è¤¦¤Ê³ØÀ¸¤Ï¡Ö»×¤¤¤Ä¤«¤Ê¤«¤Ã¤¿¡×¤Èȯ¸À¤¹¤ë¤³¤È¤¬Â¿¤¤¤¬¡¤¤½¤ì¤Ï°Ê²¼¤ÎÆóÅÀ¤Ë¤ª¤¤¤Æ¤½¤â¤½¤â¹Í¤¨Êý¤¬´Ö°ã¤Ã¤Æ¤¤¤ë¡¥
- Ê£»¨¤Ê¤â¤Î¤ËÂФ¹¤ëÂнè¤ò¤¤¤¤Ê¤ê¡Ö»×¤¤¤Ä¤¯¡×¤Û¤ÉÉáÄ̤οʹ֤ÎǾ¤ß¤½¤ÏÎɤ¯½ÐÍè¤Æ¤¤¤Ê¤¤¡¥¤Ë¤â´Ø¤ï¤é¤º¼«Ê¬¤Ï¤Ç¤¤ë¤È»×¤¤¹þ¤ó¤Ç¤¤¤ë¤È¤¤¤¦°ÕÌ£¤Ç ÐþËý ¤Ç¤¢¤ë.
- ¥×¥í¥°¥é¥à¤Ï¡ÖÂоݤòʬ²ò¤·¤Æµ¡Ç½¤òµ½Ò¤¹¤ëÁàºî¤ò·«¤êÊÖ¤·¤¿·ë²Ì¡×¤Ê¤Î¤Ë¤½¤Î·ë²Ì¤ò¡Ö»×¤¤¤Ä¤¯¡×¤È¤ß¤Ê¤¹¤Î¤Ï¡¤how ¤¬º¬Ëܤ«¤é´Ö°ã¤Ã¤Æ¤¤¤ë¤È¤¤¤¦°ÕÌ£¤Ç¡Ö¤ª¶â¤¬¶õ¤«¤é¹ß¤Ã¤Æ¤¯¤ë¤Î¤òÂԤĤȤ¤¤¦¤Î¤ÈƱ¤¸¡×¤À¡¥
¤³¤ì¤Ï¤ª¤½¤é¤¯¡¤¡ÖÊ£»¨¤µ¤òʬ²ò¤¹¤ë¤³¤È¤ÎËܼÁ¤µ¡¤½ÅÍ×À¤òÍý²ò¤·¤Æ¤¤¤Ê¤¤¡×¤³¤È¤¬¸¶°ø¤À¤í¤¦¡¥¤³¤Î¤³¤È¤Ï·Ú»ë¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡¥Âç»ö¤Ê¤³¤È¤Ê¤Î¤Çɸ¸ìŪ¤ËÂ礤¯½ñ¤¤¤Æ¤ª¤³¤¦¡¥
¡ÖÆñ¤·¤«¤Ã¤¿¡×¡Ö»×¤¤¤Ä¤«¤Ê¤«¤Ã¤¿¡×¤È¥ì¥Ý¡¼¥È¤Ë½ñ¤¤¤¿¿Í¤Ï¡¤¼«Ê¬¤Ë²¿¤¬Â¤ê¤Ê¤¤¤Î¤«¤â¤¦°ìÅÙ¤æ¤Ã¤¯¤ê¹Í¤¨¤Æ¤ß¤è¤¦¡¥
¥×¥í¥°¥é¥àÃæ¤ËƱ¤¸¤³¤È¤ò·«¤êÊÖ¤µ¤Ê¤¤ †
Àè¤Ë½ñ¤¤¤¿¤¬¡¤Æ±ÍͤνèÍý¤ò¤Ê¤ó¤É¤â½ñ¤«¤º¤Ë¡Ö´û¤Ë¥×¥í¥°¥é¥à¤·¤Æ¤¢¤ë¤³¤È¤òÍøÍѤ·¤Æ¥×¥í¥°¥é¥à¤¹¤ë¡×¤³¤È¤Ï½ÅÍפǤ¢¤ë¡¥
¼ÂºÝ¤Ë¡¤¾å¤Î¥µ¥ó¥×¥ë¤Ç¤Ï¡ÖÍ×ÁǤò³Ý¤±¤Æ¤·¤Æ¤¤¤¯Áàºî¡×¤¬°ì²Õ½ê¤Ë¤·¤«Ìµ¤¤¤³¤È¤ËÃåÌܤ·¤è¤¦¡¥¤½¤·¤Æ¡¤¼«Ê¬¤Î½ñ¤¤¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¤½¤¦¤·¤¿Áàºî¤¬²¿²Õ½ê¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤«¡¤¥Á¥§¥Ã¥¯¤·¤Æ¤ß¤è¤¦¡¥
¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤Æ¤¤¤ë´Ö¤Ï¥ë¡¼¥×¤¹¤ë : while Ì¿Îá †
¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤Æ¤¤¤ë´Ö¤Ï¥ë¡¼¥×¤¹¤ë¤È¤¤¤¦À©¸æ¤ò³Ø¤Ü¤¦¡¥
¤Þ¤º¤Ïʸˡ¤ò½ñ¤¤¤Æ¤ª¤³¤¦¡¥
while (¾ò·ï) do
¾å¤Î¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤¿¤é¼Â¹Ô¤µ¤ì¤ë
¡Ä
# ¤³¤³¤Þ¤ÇÍ褿¤é¡¤¤â¤¦°ìÅÙ¾å¤ËÌá¤Ã¤Æ¾ò·ï¤¬¥Á¥§¥Ã¥¯¤µ¤ì¤ë
end
for ¤È if ¤òÁȤ߹ç¤ï¤»¤Æµ¼»÷Ū¤Ë¼Â¸½¤¹¤ë¤³¤È¤â¤Ç¤¤ë.
¤³¤Î while Ì¿Îá¤ò»È¤Ã¤Æ¡¤1 + 2 + 3 + ... ¤È¤¤¤¦·×»»¤¬¤¤¤Ä»ØÄꤵ¤ì¤¿¿ô»ú¤òĶ¤¨¤ë¤«Ä´¤Ù¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤ß¤è¤¦¡¥ÅÓÃæ·Ð²á¤â½ÐÎϤ¹¤ë¤è¤¦¤Ë¤·¤è¤¦¡¥
¤³¤Î¾ì¹ç¤Ï¡¤Î㤨¤Ð¼¡¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ë¤Ê¤ë¤À¤í¤¦¡¥
¤³¤ì¤ò
ruby -w ./over.rb 100
¤Ê¤É¤È¤·¤Æµ¯Æ°¤¹¤ë¤È¡¤
i = 0, sum = 0 <= 100
i = 1, sum = 1 <= 100
i = 2, sum = 3 <= 100
i = 3, sum = 6 <= 100
i = 4, sum = 10 <= 100
i = 5, sum = 15 <= 100
i = 6, sum = 21 <= 100
i = 7, sum = 28 <= 100
i = 8, sum = 36 <= 100
i = 9, sum = 45 <= 100
i = 10, sum = 55 <= 100
i = 11, sum = 66 <= 100
i = 12, sum = 78 <= 100
i = 13, sum = 91 <= 100
i = 14, sum = 105 > 100
¤È¤¤¤¦¤è¤¦¤Ë·ë²Ì¤¬ÆÀ¤é¤ì¤ë¡¥¤É¤¦¤À¤í¤¦¤«¡¥¼«Ê¬¤Ç¤Ç¤¤¿¤À¤í¤¦¤«¡¥
´ª¤ÎÎɤ¤¿Í¤Ï¤â¤¦µ¤¤Å¤¤¤Æ¤¤¤ë¤À¤í¤¦¤¬¡¤while Ì¿Îá¤ÎËܼÁ¤ò½ñ¤¤¤Æ¤ª¤¯¤È¡¤
¤Ç¤¢¤ë¡¥
Fizz Buzz ¤ËÄ©Àï †
Fizz Buzz ¤È¤Ï¸ÀÍÕÍ·¤Ó¤Î°ì¼ï¤Ç¡¤1, 2,... ¤È½ç¤Ë¿ô»ú¤ò½Ò¤Ù¤Æ¤¤¤¯»þ¤Ë¡¤
- 3 ¤Ç³ä¤êÀÚ¤ì¤ë¤È¤¤Ï¤½¤Î¿ô»ú¤ÎÂå¤ï¤ê¤Ë Fizz ¤È¸À¤¦
- 5 ¤Ç³ä¤êÀÚ¤ì¤ë¤È¤¤Ï¤½¤Î¿ô»ú¤ÎÂå¤ï¤ê¤Ë Buzz ¤È¸À¤¦
- ¤¿¤À¤·¡¤3 ¤Ç¤â 5 ¤Ç¤â³ä¤êÀÚ¤ì¤ë¤È¤¤ÏÆÃÊ̤ˤ½¤Î¿ô»ú¤ÎÂå¤ï¤ê¤Ë Fizz Buzz ¤È¸À¤¦
¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡¥¤½¤³¤Ç¡¤¤³¤ì¤ò°Ê²¼¤Î¤è¤¦¤Ë¥×¥í¥°¥é¥à¤·¤è¤¦¡¥
- ¥×¥í¥°¥é¥àµ¯Æ°»þ¤Ë¤¢¤ëÄøÅÙÂ礤ʿô n (100 ¤°¤é¤¤?) ¤¬Í¿¤¨¤é¤ì¤ë¡¥
- 1,2,... ¤È¿ô¤ò¾å¤Î¥ë¡¼¥ë¤Ç½ÐÎϤ·¤Æ¤¤¤Ã¤Æ¡¤Fizz, Buzz, Fizz Buzz ¤Î½Ð¸½²ó¿ô¤Î¹ç·×¤¬ n ¤Ë¤Ê¤Ã¤¿¤éÄä»ß¤¹¤ë¡¥
¶ñÂÎŪ¤Ë¤Ï¡¤Î㤨¤Ð
ruby -w fb.rb 10
¤È¤·¤Æ 10¸Ä¤Î¡ÖÂå¤ï¤ê¡×¤¬½Ð¤Æ¤¯¤ë¤Þ¤Ç¤ò½ÐÎϤµ¤»¤ë¤È¡¤
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Fizz
¤È¤Ê¤ë¡¥¤µ¤Æ¡¤¤ß¤Ê¤µ¤ó¤Ï¤¦¤Þ¤¯¤Ç¤¤ë¤À¤í¤¦¤«¡¥
¤½¤ì¤Ã¤Ý¤¤Æ°ºî¤¬ÆÀ¤é¤ì¤Æ¤â°Â¿´¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡¥¤¤Á¤ó¤È»ä¤Î¥µ¥ó¥×¥ë¤ÈƱ¤¸½ÐÎϤˤʤäƤ¤¤ë¤«¡¤ÊѤʤȤ³¤í¤Ç´Ö°ã¤¨¤Æ 15 ¤ÎÂå¤ï¤ê¤Ë Buzz ¤Ê¤É¤È¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤«¡¤Ãí°Õ¿¼¤¯³Î¤«¤á¤è¤¦¡¥
(¾åµé¼Ô¸þ¤±) 3¤ÎÇÜ¿ô¤È3¤Î¤Ä¤¯¿ô¤Î¤È¤¤À¤±¥¢¥Û †
¡Ö3¤ÎÇÜ¿ô¤È3¤Î¤Ä¤¯¿ô¤Î¤È¤¤À¤±¥¢¥Û¤Ë¤Ê¤ë¡×¤È¤·¤Æ¾å¤ÈƱ¤¸¤³¤È¤ËÄ©À路¤Æ¤ß¤è¤¦¡¥
¤¿¤À¤·¡¤¡Ö3¤Î¤Ä¤¯¡×¤È¤¤¤¦¾ò·ï¤Ëʸ»úÎó½èÍý¤¬É¬Íפǡ¤¤³¤ì¤Ï¶µ¤¨¤¿ÈϰϤËÆþ¤Ã¤Æ¤Ê¤¤Ã챤¬É¬ÍפʤΤǼ«Ê¬¤ÇÄ´¤Ù¤ëɬÍפ¬¤¢¤ë¡¥
Collatz ¤ÎͽÁÛ¤òÄ´¤Ù¤Æ¤ß¤è¤¦ †
Collatz ¤ÎͽÁÛ ¤È¤¤¤¦Í½ÁÛ¤¬¤¢¤ë¡¥¤³¤ì¤ò while ¤ò»È¤Ã¤Æ¾¯¤·³Î¤«¤á¤Æ¤ß¤è¤¦¡¥
¤Þ¤º¤³¤ÎͽÁۤˤĤ¤¤Æµ½Ò¤·¤è¤¦¡¥¤³¤ÎͽÁۤȤϡ¤ÀµÀ°¿ô n ¤ËÂФ¹¤ë´Ø¿ô f ¤ò
- n ¤¬¶ö¿ô¤Î¾ì¹ç: f(n) = n / 2
- n ¤¬´ñ¿ô¤Î¾ì¹ç: f(n) = (3 * n) + 1
¤È¤¹¤ë¤È¡¤¡Ö¤¤¤«¤Ê¤ëÀµÀ°¿ô¤ËÂФ·¤Æ¤â¤³¤Î f ¤ò·«¤êÊÖ¤·¤ÆŬÍѤ¹¤ë¤È¤¤¤º¤ìɬ¤º 1 ¤Ë¤Ê¤ë¡×¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡¥
¤³¤ÎͽÁÛ¤¬Í¿¤¨¤é¤ì¤¿¿ô¤Ë¤Ä¤¤¤ÆÀ®¤êΩ¤Ä¤«¤É¤¦¤«¤ò³Î¤«¤á¤ë¤¿¤á¤Ë¡¤ÆþÎϤ·¤¿¿ô¤Ë f ¤òŬÍѤ·¤Æ 1 ¤Ë¤Ê¤ë¤Þ¤Ç¤Î·Ð°Þ¤ò½ÐÎϤ¹¤ë¥×¥í¥°¥é¥à¤ò½ñ¤³¤¦¡¥
¶ñÂÎŪ¤Ë¤Ï¡¤Î㤨¤Ð
ruby -w collatz.rb 100
¤È¤·¤ÆºÇ½é¤Ë "100" ¤«¤é¥¹¥¿¡¼¥È¤·¤¿¾ì¹ç¤ò¥Á¥§¥Ã¥¯¤µ¤»¤ë¤È
100 -> 50 -> 25 -> 76 -> 38 -> 19 -> 58 -> 29 -> 88 ->
44 -> 22 -> 11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40
-> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 1.
¤È¤¤¤¦¤è¤¦¤Ê½ÐÎϤò½Ð¤¹¤è¤¦¤Ë¤·¤è¤¦¡¥
¡Öf ¤Î·ë²Ì¤¬ 1 ¤Ç¤Ê¤¤´Ö¤Ï while ¤ÎÃæ¿È¤¬¼Â¹Ô¤µ¤ì¤ë¡×¤È¤¤¤¦¥¹¥È¡¼¥ê¡¼¤Ë¤Ê¤ë¤Ï¤º¤À¡¥
º£Æü¤ÎÁí»Å¾å¤² †
¾å¤Î Collatz ¤ÎͽÁÛ¤ò°Ê²¼¤Î¤è¤¦¤ËÄ´¤Ù¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¡¤·ë²Ì¤ò¥Õ¥¡¥¤¥ë¤Ë¤È¤Ã¤Æ¤ª¤¤¤Æ¤«¤éŬÅö¤Ë¥°¥é¥Õ¤Ë¤·¤è¤¦¡¥
¾ò·ï¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
- ÀµÀ°¿ô k ¤ËÂФ·¤Æ¡¤Collatz ¤Î´Ø¿ô f ¤ò²¿²óŬÍѤ¹¤ë¤È 1 ¤Ë¤Ê¤ë¤«¤ò½ÐÎϤ¹¤ë´Ø¿ô num_col(k) ¤¬ def ¤ò»È¤Ã¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¥
- ¥×¥í¥°¥é¥àµ¯Æ°»þ¤Ë¤¢¤ëÄøÅÙÂ礤ʿô n (100¤°¤é¤¤) ¤¬Í¿¤¨¤é¤ì¤ë¡¥
- 1 ¤«¤é»Ï¤á¤Æ¡¤n ¤Þ¤Ç num_col ¤Î·ë²Ì¤ò½ÐÎϤ¹¤ë¡¥
num_col(1) ¤¬ 3 ¤Ë¤Ê¤Ã¤¿¤ê¤·¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤è¤¦¡¥
¶ñÂÎŪ¤Ë¤Ï¡¤Î㤨¤Ð
ruby -w col_num.rb 30
¤È¤·¤Æ 30 ¤Þ¤Ç¤òÄ´¤Ù¤µ¤»¤ë¤È
1, 0
2, 1
3, 7
4, 2
5, 5
6, 8
7, 16
8, 3
9, 19
10, 6
11, 14
12, 9
13, 9
14, 17
15, 17
16, 4
17, 12
18, 20
19, 20
20, 7
21, 7
22, 15
23, 15
24, 10
25, 23
26, 10
27, 111
28, 18
29, 18
30, 18
¤È¤¤¤¦¤è¤¦¤Ê½ÐÎϤò½Ð¤¹¤è¤¦¤Ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡¥
¤½¤·¤Æ¡¤¤³¤Î½ÐÎϥǡ¼¥¿¤ò¥Õ¥¡¥¤¥ë¤ËÊݸ¤·¤Æ¤ª¤¤¤ÆŬÅö¤Ê¥Ä¡¼¥ë¤Ç¥°¥é¥Õ¤Ë¤·¤Æ(¤¿¤À¤·¡¤¥¨¥¯¥»¥ëÅù¤Îɽ¥Ä¡¼¥ë¤Ï¶Ø»ß)¡¤
¤È¤¤¤¦¤è¤¦¤Ê¤â¤Î¤òºî¤í¤¦¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¡¥
¤³¤ÎÎã¤Ç¤Ï 30¤Þ¤Ç¤À¤¬¡¤¤³¤ì¤ò 100 ¤°¤é¤¤¤ÎÃͤǼ¹Ԥ·¤Æ¡¤¥Ç¡¼¥¿¤È¥°¥é¥Õ¤òÆÀ¤é¤ì¤¿¤é´°À®¡¤¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¡¥
¥ì¥Ý¡¼¥È †
ËÜÆü¼õ¤±¤¿¹ÖµÁ¤ª¤è¤Ó¹Ô¤Ã¤¿¼Â½¬¤Ë¤Ä¤¤¤Æ¡¤´Êñ¤Ë¤Þ¤È¤á¤¿Êó¹ð¤ò¤»¤è.
¤Þ¤¿¡¤Áí»Å¾å¤²¤ÎÉôʬ¤Ç¼«Ê¬¤Ç½ñ¤¤¤¿¥×¥í¥°¥é¥à¤òÊó¹ð¤»¤è.
¤â¤Á¤í¤ó³Æ¼«¤Î
- ½ê°(³ØÉô¡¤³Ø²Ê)
- ³ØÀÒÈÖ¹æ
- ³Øǯ
- »á̾
- Æü»þ
- ´Î¿´¤Î¥ì¥Ý¡¼¥ÈÆâÍÆ(ÆÀ¤¿Ãθ«¡¤ºî¶È¤Ë¤Ä¤¤¤Æµ¤¤Å¤¤¤¿¤³¤ÈÅù¤â)
¤ò½ñ¤¯¤Î¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë.
about Icons, ClipArts †
Some icons in this page are downloadable at ICONFINDER.
The "note" icon designed by Marco Martin is distributed with the LGPL licence,
the "warning" icon designed by Alexandre Moore with the GPL licence
and the "triangle" icon designed by Joseph North is distributed with the Creative Commons (Attribution-Noncommercial-Share Alike 3.0 Unported) licence.
Some clip arts used in this page are downloadable at Open Clip Art Library.
We deeply appreciate their superb works. With licence, they describe that "the actual clipart content on open clipart library is Public domain" in the web.