๐Ÿ”™ Back to Top

Apr 19 2014

ๅคขๆ—ฅ่จ˜ใ€‚

ใชใ‚“ใ‹ใฎไฝ“่‚ฒ็ฅญใซๅ‚ๅŠ ใ—ใฆใ„ใŸใ€‚่‡ชๅˆ†ใŒ25็ต„ใงใ€ๅ›บใพใฃใฆๅบงใฃใฆใ„ใŸใ‘ใฉใฟใ‚“ใชใฉใ“ใ‹ใซใ‚ใใณใซ่กŒใฃใฆใ—ใพใฃใŸใ€‚ ๆฎ‹ใฃใŸใฎใฏ่‡ชๅˆ†ใ‚’ๅซใ‚ใฆๅ››ไบบใงใ€ๅ†…ไธ€ไบบใŒ่‡ชๅˆ†ใซ้ฆดใ‚Œ้ฆดใ‚Œใ—ใ่ฟ‘ๅฏ„ใฃใฆใใŸใฎใงๆ…Œใฆใฆ่กŒใๅ…ˆใ‚‚ใชใ้€ƒใ’ใŸใ€‚


ๅค–ใงๅถ็„ถ็Ÿฅใ‚Šๅˆใ„ใจๅ‡บไผšใ†็ขบ็Ž‡ใฏ็Ÿฅใ‚Šๅˆใ„ใฎไบบๆ•ฐใซๆฏ”ไพ‹ใ™ใ‚‹ใจ่จ€ใˆใชใใ‚‚ใชใ„ใ‘ใ‚Œใฉใ€ ๅ ดๆ‰€ใ ใจใ‹ๆ™‚้–“ใ ใจใ‹ใ„ใ†ๆกไปถใŒไธŽใˆใ‚‰ใ‚ŒใŸใ‚‰ใ€็ขบ็Ž‡ใฏ้›ถใ‹ๅฃฑใ‹ใงใ‚ใ‚‹ใ‚ˆใ†ใชๆฐ—ใ‚‚ใ™ใ‚‹ใ€‚


ใธใ‚“ใชใ‚ผใƒชใƒผใŒใ€่ฉฆไพ›ๅ“ใŒใ€็”บใฎใ‚ใกใ‚‰ใ“ใกใ‚‰ใง้…ใ‚‰ใ‚Œใฆใ„ใŸใ€‚ ใŸใใ•ใ‚“ไบบ้–“ใŒใ„ใ‚‹ไธญใง่‡ชๅˆ†ใ ใ‘ใŒ็„ก่ฆ–ใ•ใ‚Œใฆใ„ใŸใ‚ˆใ†ใ ใฃใŸใ€‚ ใ ใ‹ใ‚‰ใŸใใ•ใ‚“่‡ชๅˆ†ใ‹ใ‚‰ไบบใซ่ฉฑใ—ใ‹ใ‘ใ‚‹ใ“ใจใซใ—ใŸใ€‚ใใ†ใ™ใ‚Œใฐไธ€ๅฟœใฏใฟใ‚“ใชใ€่‡ชๅˆ†ใฎ็›ธๆ‰‹ใ‚’ใ—ใฆใใ‚ŒใŸใ€‚


ไฝ™ๅ†ๅธฐใ€ใฎๆ„ๅ‘ณใฏใ‚ใ‹ใ‚‰ใชใ„ใ‘ใ‚Œใฉใ€ใใ‚Œใ‚’็”จใ„ใŸ ใ‚ญใƒฅใƒผใฃใฝใ„ไฝ•ใ‹ใƒ‡ใƒผใ‚ฟๆง‹้€ ใฎๅ†็พใ‚’ๅˆฉ็”จใ—ใŸใ€ ๅน…ๅ„ชๅ…ˆๆŽข็ดขใ€‚

ใƒŽใƒผใƒ‰ a ใฎ่กŒใๅ…ˆใ€c a = @ [c1 .. cn] ใŒ่‡ช็„ถใซ่€ƒใˆใ‚‰ใ‚Œใ‚‹ใƒ‡ใƒผใ‚ฟๆง‹้€ ใซใคใ„ใฆใ€ (ๆœจใจใ‹) ๆ นใƒŽใƒผใƒ‰ a0 ใ‹ใ‚‰ๅˆใ‚ใฆใ€ๅน…ๅ„ชๅ…ˆๆŽข็ดขใง่พฟใฃใŸ้ †ใ‚’ใƒชใ‚นใƒˆใจใ—ใฆ่ฟ”ใ™ใ“ใจใซใ™ใ‚Œใฐ็›ฎ็š„ใฏๆžœใŸใ•ใ‚ŒใŸใ€‚

bfs a0 = a0 : something
walk (a : rest) = c a ++ walk rest

that is

walk q = c (head q) ++ walk (tail q)

ๅˆใ‚ใ‹ใ‚‰ใ€ๅฎŒๅ…จใชa : rest ใŒไธŽใˆใ‚‰ใ‚Œใฆใ‚Œใฐใ€ walk ใจใฏๆ‰€่ฉฎ map ใซ่ฟ‘ใ„ไฝ•ใ‹ใ ใ‘ใฉใ€

queue = a : walk queue

ใ“ใฎใ‚ˆใ†ใซใƒชใ‚นใƒˆใฎๅ†ๅธฐ็š„ๅฎš็พฉใ‚’็”จใ„ใ‚‹ใจใ€้•ใ†ใ“ใจใซใชใ‚‹ใ€‚

walk q = c (head q) ++ walk (tail q)

ใฎไธ‹ใง(ใกใ‚‡ใฃใจๆ›ธใใชใŠใ—ใŸ)ใ€

q = a : walk q
  = a : c (head q) ++ walk (tail q)

  where
  walk (tail q) = c $ head (tail q)
                = c $ c $ head q
                = c (c a)

q = a ++ c a ++ c (c a) ++ c (c (c a)) ++ ..

ใซใชใ‚‹ใฏใšใ€‚ (++)ใŒ(:)ใชใ‚‰ใ€ใŸใ ใฎscanใ ใ€‚

qใฎๅ…ˆ้ ญใ‹ใ‚‰ใ€้ฉๅฝ“ใชๅ‡ฆ็†ใ‚’ใ—ใฆใ‚„ใฃใฆใ€้ฉๅฝ“ใชใจใ“ใงๆ‰“ใกๅˆ‡ใ‚Œใฐใ€ ๅน…ๅ„ชๅ…ˆๆŽข็ดขใฏๅฎŒ้‚ใ•ใ‚Œใ‚‹ใ€‚