124
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ใ€Œๅ‰ฒใ‚Šใฐใ—ใ‚ฒใƒผใƒ ใ€ใŒๅพŒๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ“ใจใ‚’็ขบ่ชใ™ใ‚‹

124
Posted at

ใฏใ˜ใ‚ใซ

ใ€Œๅ‰ฒใ‚Šใฐใ—ใ€ใจใ„ใ†ไบŒไบบใง่กŒใ†ๆŒ‡้ŠใณใŒใ‚ใ‚‹ใ€‚ๅœฐๆ–นใซใ‚ˆใฃใฆๅๅ‰ใ‚„ใƒซใƒผใƒซใฏๆง˜ใ€…ใ ใŒใ€ๅŸบๆœฌใƒซใƒผใƒซใฏไปฅไธ‹ใฎใ‚ˆใ†ใชใ‚‚ใฎใ ใ€‚

  1. ใ˜ใ‚ƒใ‚“ใ‘ใ‚“ใชใฉใงๅ…ˆ่กŒใ€ๅพŒๆ”ปใ‚’ๆฑบใ‚ใ€ใŠไบ’ใ„ไธกๆ‰‹ใฎไบบๅทฎใ—ๆŒ‡ใ‚’็ซ‹ใฆใ‚‹
  2. ๅ…ˆ่กŒใฏใ€่‡ชๅˆ†ใฎๅฅฝใใชๆ‰‹ใง็›ธๆ‰‹ใฎๅฅฝใใชๆ‰‹ใ‚’ๆ”ปๆ’ƒใ™ใ‚‹
  3. ๆ”ปๆ’ƒใ•ใ‚ŒใŸๅดใฏใ€ๆ”ปๆ’ƒใ•ใ‚ŒใŸๆ‰‹ใฎๆŒ‡ใ‚’ใ€ๆ”ปๆ’ƒใ—ใŸๆ‰‹ใฎๆŒ‡ใฎๆœฌๆ•ฐใ ใ‘ๅข—ใ‚„ใ™
  4. ใ“ใฎๆ™‚ใ€ใ‚‚ใ—ๆŒ‡ใŒ5ๆœฌไปฅไธŠใซใชใฃใŸใ‚‰ใใฎๆ‰‹ใฏๆญปใฌ
  5. ใ“ใ‚Œใ‚’ไบคไบ’ใซ็นฐใ‚Š่ฟ”ใ—ใ€ไธกๆ‰‹ใŒๆญปใ‚“ใ ใ‚‰่ฒ ใ‘
rule1.png rule2.png

่ฟฝๅŠ ใƒซใƒผใƒซใ‚„ใƒใƒชใ‚จใƒผใ‚ทใƒงใƒณใจใ—ใฆใ€ไปฅไธ‹ใฎใ‚ˆใ†ใชใ‚‚ใฎใŒใ‚ใ‚‹ใ€‚

  • modใƒซใƒผใƒซ๏ผšๆ”ปๆ’ƒใ•ใ‚ŒใŸใจใใ€ใ€Œใกใ‚‡ใ†ใฉ5ใ€ใงใชใ‘ใ‚Œใฐๆญปใชใšใ€ๆŒ‡ใฎๆœฌๆ•ฐใฏ5ใงๅ‰ฒใฃใŸไฝ™ใ‚Šใซใชใ‚‹
  • ๅˆ†่บซใƒซใƒผใƒซ๏ผš่‡ชๅˆ†ใฎๆ‰‹็•ชใงใ€ๆ‰‹ใŒไธ€ๆœฌๆญปใ‚“ใงใ„ใ‚‹ใจใใ€ๆŒ‡ใฎ็ทๆ•ฐใŒๅค‰ใ‚ใ‚‰ใชใ„ใ‚ˆใ†ใซไธกๆ‰‹ใซๆŒ‡ใ‚’ๅˆ†ใ‘ใ‚‹ใ“ใจใŒใงใใ‚‹
  • ่‡ชๅˆ†ๆ”ปๆ’ƒ๏ผš่‡ชๅˆ†ใฎๆ‰‹ใง่‡ชๅˆ†ใ‚’ๆ”ปๆ’ƒใ™ใ‚‹ใ“ใจใ‚’่จฑใ™

็‰นใซmodใƒซใƒผใƒซใฏใ‹ใชใ‚Šๅบƒใ„็ฏ„ๅ›ฒใงๆŽก็”จใ•ใ‚Œใฆใ„ใ‚‹ใ‚ˆใ†ใ ใ€‚ใ†ใกใฎๅœฐๅŸŸใงใฏใ€Œๅ‰ฒใ‚Šใฐใ—ใ€ใจๅ‘ผใฐใ‚Œใฆใ„ใ‚‹ใ‚‚ใฎใฎใ€ใ“ใ‚ŒใŒ็ขบๅฎš็š„ใชๅๅ‰ใงใฏใชใ„ใ‚‰ใ—ใใ€Wikipediaใงใฏๆ•ฐๅญ—ใ‚’ๅข—ใ‚„ใ™้Šใณใจ็ดนไป‹ใ•ใ‚Œใฆใ„ใ‚‹ใ€‚

ใ•ใฆใ€็ฐกๅ˜ใฎใŸใ‚ใ€ๅŸบๆœฌใƒซใƒผใƒซใ ใ‘ใ‚’่€ƒใˆใ‚ˆใ†ใ€‚ๆญปใ‚“ใ ๆ‰‹ใฎๆŒ‡ใฎๆœฌๆ•ฐใ‚’ใ€Œ5ๆœฌใ€ใจๆ•ฐใˆใ‚‹ใจใ€ใŠไบ’ใ„ใฎๆŒ‡ใฎๆœฌๆ•ฐใฏใ€ใ‚ฟใƒผใƒณๆฏŽใซๅฟ…ใšๅข—ๅŠ ใ™ใ‚‹ใ€‚ใ—ใŸใŒใฃใฆใ€ๅƒๆ—ฅๆ‰‹ใฏๅญ˜ๅœจใ›ใšใ€ๅฟ…ใšๆœ‰้™ใ‚ฟใƒผใƒณใงใ‚ฒใƒผใƒ ใŒ็ต‚ใ‚ใ‚‹ใ€‚ใพใŸใ€ๅ‹่ฒ ใŒๆฑบใพใ‚‹ใฎใฏ็›ธๆ‰‹ใฎๆœ€ๅพŒใฎๆ‰‹ใ‚’ๆฎบใ—ใŸๆ™‚ใ ใ‘ใชใฎใงใ€ๅผ•ใๅˆ†ใ‘ใฏๅญ˜ๅœจใ—ใชใ„ใ€‚ใƒฉใƒณใƒ€ใƒ ่ฆ็ด ใ‚‚ใชใ„ใŸใ‚ใ€ๅ…ˆๆ‰‹ใ‹ๅพŒๆ‰‹ใฎใฉใกใ‚‰ใ‹ใŒๅฟ…ๅ‹ใงใ‚ใ‚‹ใ“ใจใŒใ‚ใ‹ใ‚‹ใ€‚

ๅฎŸ้š›ใ€ใ“ใฎใ‚ฒใƒผใƒ ใฏๅพŒๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ€‚ใใ‚Œใ‚’่ฆ‹ใฆใฟใ‚ˆใ†ใ€‚ใจใ„ใ†ใฎใŒๆœฌ็จฟใฎ่ถฃๆ—จใงใ‚ใ‚‹ใ€‚

ใ‚ฝใƒผใ‚นใฏไปฅไธ‹ใซใŠใ„ใฆใ‚ใ‚‹ใ€‚

็Šถๆ…‹้ท็งปๅ›ณ

่€ƒใˆใ‚‹ในใ็Šถๆ…‹ใฏใ€ๅ…ˆๆ‰‹ใฎๆŒ‡ใฎๆœฌๆ•ฐใจๅพŒๆ‰‹ใฎๆŒ‡ใฎๆœฌๆ•ฐใ€ใใ—ใฆ็พๅœจๅ…ˆๆ‰‹็•ชใ‹ๅพŒๆ‰‹็•ชใ‹ใ ใ‘ใงใ‚ใ‚‹ใ€‚็Šถๆ…‹ๆ•ฐใŒๆœ‰้™ใชใฎใงใ€ๅ†ๅธฐใงใŸใฉใฃใฆใ‚ฐใƒฉใƒ•ใ‚’ไฝœใ‚‹ใฎใฏ้›ฃใ—ใใชใ„ใจๆ€ใ‚ใ‚Œใ‚‹ใŒใ€ๅ˜็ด”ใซๅฎŸ่ฃ…ใ™ใ‚‹ใจ็Šถๆ…‹ใŒๅคšใ™ใŽใ‚‹ใฎใงใ€ไธกๆ‰‹ใฎๆŒ‡ใฎๆœฌๆ•ฐใ‚’ใ‚ฝใƒผใƒˆใ—ใ‚ˆใ†ใ€‚ใคใพใ‚Šใ€๏ผˆๅณxๆœฌ,ๅทฆyๆœฌ๏ผ‰ใจใ„ใ†็Šถๆ…‹ใจใ€(ๅณyๆœฌ,ๅทฆxๆœฌ)ใจใ„ใ†็Šถๆ…‹ใ‚’ๅŒไธ€่ฆ–ใ™ใ‚‹ใ€‚่ค‡ๆ•ฐใฎ็Šถๆ…‹ใ‹ใ‚‰ๅŒใ˜็Šถๆ…‹ใซ้ท็งปใ—ใฆใใ‚‹ๅ ดๅˆใŒใ‚ใ‚‹ใฎใงใ€็Šถๆ…‹้ท็งปใ‚ฐใƒฉใƒ•ใฏๅŽณๅฏ†ใซใฏใ€Œๆœจ(tree)ๆง‹้€ ใ€ใ˜ใ‚ƒใชใ„ใฎใ ใŒใ€ใ“ใ“ใงใฏๆœจใจๅ‘ผใถใ“ใจใซใ—ใ‚ˆใ†ใ€‚

ใ‚ฐใƒฉใƒ•ใ‚’ๆใใฎใฏGraphvizใงไธ€็™บใงใ‚ใ‚‹ใ€‚ใƒŽใƒผใƒ‰ไธ€่ฆงใจใ‚จใƒƒใ‚ธไธ€่ฆงใฎใƒชใ‚นใƒˆใ‚’ไฝœใ‚Šใ€Graphvizใซๆœจใ‚’ๆใ‹ใ›ใ‚‹ใฎใŒ็ฐกๅ˜ใ ใŒใ€ๅพŒใงๅพŒๆ‰‹ๅฟ…ๅ‹ใ‚’่ฆ‹ใ‚‹ใŸใ‚ใซๆœจใ‚’ใŸใฉใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใฎใงใ€่‡ชๅˆ†ใงๆœจๆง‹้€ ใ‚’ไฝœใ‚ใ†ใ€‚

ใจใ‚Šใ‚ใˆใšใƒŽใƒผใƒ‰ใ‚’่กจใ™ใ€ใ“ใ‚“ใชใ‚ฏใƒฉใ‚นใ‚’ไฝœใ‚‹ใ‚“ใงใ™ใ‹ใญใ€‚

class State:
    def __init__(self, is_first, f, s):
        self.is_first = is_first
        self.f = [max(f), min(f)]
        self.s = [max(s), min(s)]
        self.siblings = []
        self.is_drawn = False

    def params(self):
        return (self.is_first, self.f, self.s)

    def __eq__(self, other):
        return self.params() == other.params()

    def __str__(self):
        s = str(self.f) + "\n" + str(self.s)
        if self.is_first:
            return "f\n" + s
        else:
            return "s\n" + s

    def has(self, node):
        return node in self.siblings

    def next_state(self, fi, si):
        d = self.f[fi] + self.s[si]
        f2 = self.f.copy()
        s2 = self.s.copy()
        if d >= 5:
            d = 0
        if self.is_first:
            s2[si] = d
        else:
            f2[fi] = d
        return State(not self.is_first, f2, s2)

่‡ชๅˆ†ใฎ็Šถๆ…‹(ๅ…ˆๆ‰‹็•ชใ‹ใฉใ†ใ‹ใ€ๅ…ˆๆ‰‹็•ชใจๅพŒๆ‰‹็•ชใฎๆŒ‡ใฎๆœฌๆ•ฐ)ใจใ€ๅญใƒŽใƒผใƒ‰ใฎๆƒ…ๅ ฑ(siblings)ใ‚’ไฟๆŒใ—ใฆใ„ใ‚‹ใ€‚__eq__ใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใฎใฏใ€ๅญใƒŽใƒผใƒ‰ใƒชใ‚นใƒˆใซๅŒใ˜Stateใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใŒใ‚ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’inใงๅˆคๅฎšใ•ใ›ใ‚‹ใŸใ‚ใ ใ€‚ใพใŸใ€็พๅœจใฎ็Šถๆ…‹ใ‹ใ‚‰ใ€Œfi็•ชใฎๆ‰‹ใงsi็•ชใฎๆ‰‹ใ‚’ๆ”ปๆ’ƒใ€ใ—ใŸๅพŒใฎ็Šถๆ…‹ใ‚’่ฟ”ใ™next_stateใ‚’ๅฎŸ่ฃ…ใ—ใฆใ‚ใ‚‹(ๅ…ˆๆ‰‹็•ชใฎๅ ดๅˆใ€‚ๅพŒๆ‰‹็•ชใฎๆ™‚ใฏsi็•ชใงfi็•ชใ‚’ๆ”ปๆ’ƒ)ใ€‚

ใ“ใ‚ŒใŒใงใใฆใ—ใพใˆใฐใ€ๅ†ๅธฐใงๆœจใ‚’ไฝœใ‚‹ใฎใฏ็ฐกๅ˜ใ ใ€‚

def move(parent, index, is_first, nodes):
    fi, si = index
    if parent.f[fi] == 0 or parent.s[si] == 0:
        return
    child = parent.next_state(fi, si)
    if parent.has(child):
        return
    s = str(child)
    child = nodes.get(s, child)
    nodes[s] = child
    parent.siblings.append(child)
    for i in [(0, 0), (0, 1), (1, 0), (1, 1)]:
        move(child, i, not is_first, nodes)


def make_tree():
    nodes = {}
    root = State(True, [1, 1], [1, 1])
    nodes[str(root)] = root
    move(root, (0, 0), True, nodes)
    return root

make_treeใ‚’ๅ‘ผในใฐใ€ๅˆๆœŸ็Šถๆ…‹ใ‚’ๆ นใจใ™ใ‚‹ๆœจๆง‹้€ ใŒ่ฟ”ใ‚‹ใ€‚

ๅฏ่ฆ–ๅŒ–ใฏGraphvizใ‚’ไฝฟใŠใ†ใ€‚ไธ€ใคใ ใ‘ๆณจๆ„ใ™ในใ็‚นใฏใ€ใƒŠใ‚คใƒผใƒ–ใซๆ็”ปใ™ใ‚‹ใจใ€ๅŒใ˜ใ‚จใƒƒใ‚ธใŒ่ค‡ๆ•ฐๆœฌๆใ‹ใ‚Œใฆใ—ใพใ†ใ“ใจใ ใ€‚ใ‚ใ‚‹็Šถๆ…‹ใซ่ค‡ๆ•ฐใฎใƒ‘ใ‚นใ‹ใ‚‰ๅˆฐ้”ๅฏ่ƒฝใชใฎใงใ€ๅŒใ˜ใ‚จใƒƒใ‚ธใ‚’ไฝ•ๅ›žใ‚‚้€šใ‚‹ใ“ใจใซใชใ‚‹ใ€‚ใ‚ใ‚‹ใƒšใ‚ขใ‚’็ตใถใ‚จใƒƒใ‚ธใ‚’ไธ€ๆœฌใ—ใ‹ใ‹ใ‹ใชใ„ใ‚ˆใ†ใซใ™ใ‚‹ใŸใ‚ใซใฏ

  • ใ‚จใƒƒใ‚ธใฎ่พžๆ›ธใ‚’ไฝœใฃใฆใ€ใ™ใงใซๆ็”ปๆธˆใฟใ‹่ชฟในใ‚‹
  • ใƒŽใƒผใƒ‰ใซ็Šถๆ…‹ใ‚’ๆŒใŸใ›ใฆใ€ใ™ใงใซๆ็”ปๆธˆใฟใ‹่ชฟในใ‚‹

ใชใฉใฎๆ–นๆณ•ใŒ่€ƒใˆใ‚‰ใ‚Œใ‚‹ใŒใ€ใ“ใ“ใฏๅฎ‰็›ดใซๅพŒ่€…ใ‚’้ธใ‚“ใ ใ€‚Stateใ‚ฏใƒฉใ‚นใซis_drawnใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใ‚’ๆŒใŸใ›ใฆใ€ๆ็”ปๆธˆใฟใชใ‚‰ๆใ‹ใชใ„ใ“ใจใซใ™ใ‚‹ใ€‚ไปฅไธŠใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใจใ“ใ†ใชใ‚‹ใ€‚

def make_graph(node, g):
    if node.is_drawn:
        return
    node.is_drawn = True
    ns = str(node)
    if max(node.f) == 0:
        g.node(ns, color="#FF9999", style="filled")
    elif max(node.s) == 0:
        g.node(ns, color="#9999FF", style="filled")
    else:
        g.node(ns)
    for n in node.siblings:
        g.edge(ns, str(n))
        make_graph(n, g)

root = make_tree()
g = Digraph(format="png")
make_graph(root, g)
g.render("tree")

ไฝœๆˆใ—ใŸๆœจใฎๆ นใ‚’ๆธกใ—ใฆใ€ใใ“ใ‹ใ‚‰้ †็•ชใซใŸใฉใฃใฆใƒŽใƒผใƒ‰ใจใ‚จใƒƒใ‚ธใ‚’ไฝœใฃใฆใ„ใใ ใ‘ใ ใŒใ€ๆ็”ปๆธˆใƒŽใƒผใƒ‰ใชใ‚‰returnใ—ใฆใ„ใ‚‹ใ€‚ใพใŸใ€ๅ‹่ฒ ใŒๆฑบใ—ใŸ็Šถๆ…‹ใŒใ‚ใ‹ใ‚Šใ‚„ใ™ใ„ใ‚ˆใ†ใซใ€ๅ…ˆๆ‰‹็•ชใฎๅ‹ใกใ‚’้’ใใ€ๅพŒๆ‰‹็•ชใฎๅ‹ใกใ‚’่ตคใๅก—ใฃใฆใ„ใ‚‹ใ€‚

ใ“ใ†ใ—ใฆไฝœๆˆใ—ใŸ็Šถๆ…‹้ท็งปๅ›ณใฏใ“ใ‚“ใชๆ„Ÿใ˜ใซใชใ‚‹ใ€‚

tree.png

ๅทฆๅณใฎๆ‰‹ใฎ้ †็•ชใ‚’็ธฎ้€€ใ•ใ›ใฆ็Šถๆ…‹ๆ•ฐใ‚’ๆธ›ใ‚‰ใ—ใŸใŒใ€ใใ‚Œใงใ‚‚165ใƒŽใƒผใƒ‰ใ€ใ‚จใƒƒใ‚ธใฏ273ๆœฌใ‚ใ‚Šใ€ไบบ้–“ใฎ็›ฎใง่งฃๆžใ™ใ‚‹ใฎใฏใ—ใ‚“ใฉใ„ใ€‚ใ•ใ‚‰ใซใ€ๅ…ˆๆ‰‹็•ชๅ‹ๅˆฉใ€ๅพŒๆ‰‹็•ชๅ‹ๅˆฉใฎใƒŽใƒผใƒ‰ใŒใใ‚Œใžใ‚Œ8ๅ€‹ใšใคใ‚ใ‚Šใ€ใ“ใ‚Œใ ใ‘ใงใฏใฉใกใ‚‰ใŒๆœ‰ๅˆฉใ‹ใฏๅˆคๆ–ญใงใใชใ„ใ€‚

ๅพŒๆ‰‹ๅฟ…ๅ‹่งฃๆž

ใ•ใฆใ€ใ“ใฎใ‚ฒใƒผใƒ ใŒๅพŒๆ‰‹ๅฟ…ๅ‹ใงใ‚ใ‚‹ใ“ใจใ‚’ๅฏ่ฆ–ๅŒ–ใ—ใฆใฟใ‚ˆใ†ใ€‚ๅผ•ใๅˆ†ใ‘ใŒใชใ„ใฎใ ใ‹ใ‚‰ใ€่ฒ ใ‘ใซใคใชใŒใ‚‹ๆ‰‹ใ‚’ๆ‰“ใŸใชใ‘ใ‚Œใฐๅ‹ใฆใ‚‹ใฏใšใงใ‚ใ‚‹ใ€‚ๅ…ˆๆ‰‹ใซๅ‹ใก็ญ‹ใŒใ‚ใ‚‹ๅ ดๅˆใ€ๅฝ“็„ถๅ…ˆๆ‰‹ใฏใใฎๆ‰‹ใ‚’ๆ‰“ใคใ€‚ใ—ใŸใŒใฃใฆใ€ๅพŒๆ‰‹ใฏใ€Œๅ…ˆๆ‰‹ใซๅ‹ใก็ญ‹ใŒใ‚ใ‚‹ใ‚ˆใ†ใช็Šถๆ…‹ใซใคใชใŒใ‚‹ๆ‰‹ใ€ใ‚’ๆ‰“ใฃใฆใฏใชใ‚‰ใชใ„ใ€‚ใใ“ใงใ€ใใ“ใซใคใชใŒใ‚‹ๆ‰‹ใ‚’ๆžๅˆˆใ™ใ‚‹ใ€‚ใพใŸใ€ๆžๅˆˆใ‚’ใ—ใŸ็ตๆžœใ€ๆ‰“ใฆใ‚‹ๆ‰‹ใŒใชใใชใฃใฆใ—ใพใ†ใƒŽใƒผใƒ‰ใŒๅ‡บใฆใใ‚‹ใ€‚ใ“ใฎใ‚ˆใ†ใชใƒŽใƒผใƒ‰ใซใคใชใŒใ‚‹ๆ‰‹ใ‚‚ๆ‰“ใฃใฆใฏใชใ‚‰ใชใ„ใฎใงใ€ใใ‚Œใ‚‚ๆžๅˆˆใ™ใ‚‹ใ€‚

prune.png

ไปฅไธŠใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใจใ“ใ‚“ใชๆ„Ÿใ˜ใซใชใ‚‹ใ ใ‚ใ†ใ€‚

def prune(node):
    if max(node.s) == 0:
        return True
    if node.is_first:
        for n in node.siblings:
            if prune(n):
                return True
        return False
    if not node.is_first:
        sib = node.siblings.copy()
        for n in sib:
            if prune(n):
                node.siblings.remove(n)
        if len(node.siblings) == 0:
            return True
    return False

ใ“ใ‚Œใซrootใ‚’้ฃŸใ‚ใ›ใฆใ‹ใ‚‰ๆ็”ปใ™ใ‚‹ใจใ€ไปฅไธ‹ใฎใ‚ˆใ†ใช็Šถๆ…‹้ท็งปๅ›ณใ‚’ๅพ—ใ‚‹ใ€‚

ptree.png

ๅ„ใƒŽใƒผใƒ‰ใงใ€fใŒๅ…ˆๆ‰‹็•ชใ€sใŒๅพŒๆ‰‹็•ชใ€ไธŠๆฎตใŒๅ…ˆๆ‰‹็•ชใฎๆŒ‡ใฎๆœฌๆ•ฐใ€ไธ‹ๆฎตใŒๅพŒๆ‰‹็•ชใฎๆŒ‡ใฎๆœฌๆ•ฐใงใ‚ใ‚‹ใ€‚ไพ‹ใˆใฐ

f
[1,0]
[3,1]

ใฏใ€ๅ…ˆๆ‰‹็•ชใงใ€ๅ…ˆๆ‰‹ใŒๆŒ‡ไธ€ๆœฌใ€ใ‚‚ใ†็‰‡ๆ–นใฎๆ‰‹ใฏๆญปไบกใ€ๅพŒๆ‰‹็•ชใฏ3ๆœฌใจ1ๆœฌใ€ใจใ„ใ†็Šถๆ…‹ใ‚’่กจใ—ใฆใ„ใ‚‹ใ€‚ๅ…ˆๆ‰‹็•ชใŒใฉใฎใ‚ˆใ†ใชๆ‰‹ใ‚’ๆ‰“ใจใ†ใจใ‚‚ใ€ๅพŒๆ‰‹็•ชใŒใ“ใฎๅ›ณใฎใ‚ˆใ†ใซๅฏพๅฟœใ™ใ‚‹ใจๅฟ…ใšๅพŒๆ‰‹็•ชๅ‹ๅˆฉใฎใƒŽใƒผใƒ‰ใซๅˆฐ้”ใงใใ‚‹ใ“ใจใŒใ‚ใ‹ใ‚‹ใ€‚

ใชใŠใ€ๅ˜ใซใ€Œ่ฒ ใ‘ใซใคใชใŒใ‚‹ๆ‰‹ใ‚’ๆ‰“ใŸใชใ„ใ€ใจใ„ใ†ๆ–น้‡ใงๆžใ‚’ๅˆˆใฃใŸใฎใงใ€ๅ‹ใฆใ‚‹ๆ‰‹ใŒใ‚ใ‚‹ๅ ดๅˆใงใ‚‚ใ€ใ‚ใ–ใ‚ใ–ๅ…ˆๆ‰‹็•ชใ‚’ๅปถๅ‘ฝใ•ใ›ใ‚‹ๆ‰‹ใ‚‚ๆ‰“ใฃใŸใ‚Šใ—ใฆใ„ใ‚‹ใŒใ€ใพใใใ“ใฏใใ‚Œใ€‚

ใพใจใ‚

ใ€Œๅ‰ฒใ‚Šใฐใ—ใ€ใจใ„ใ†ๆŒ‡้ŠใณใฎๅŸบๆœฌใƒซใƒผใƒซใƒใƒผใ‚ธใƒงใƒณใซใคใ„ใฆๅพŒๆ‰‹ใŒๅฟ…ๅ‹ใงใ‚ใ‚‹ใ“ใจใ‚’ๅฏ่ฆ–ๅŒ–ใ—ใฆใฟใŸใ€‚ๅ†ๅธฐใงๆœจใ‚’ไฝœใฃใฆๅฏ่ฆ–ๅŒ–ใ—ใ‚ˆใ†ใจใ™ใ‚‹ๅ ดๅˆใ€ๆ„ๅค–ใซๆ‰‹้ ƒใชไพ‹ใŒใชใ„ใ€‚ไพ‹ใˆใฐไธ‰็›ฎไธฆในใฏๅฎŸ่ฃ…ใฏ็ฐกๅ˜ใ ใŒๅฏพ็งฐๆ€งใง่ฝใจใ—ใฆใ‚‚็›ธๅฝ“ใช็Šถๆ…‹ๆ•ฐใŒใ‚ใ‚‹ใ—ใ€ๅฐใ•ใ„ใ‚ชใ‚ปใƒญใ‚‚ใ€Œใใ“ใซ็ฝฎใ‘ใ‚‹ใ‹ใฉใ†ใ‹ใ€ใฎๅˆคๅฎšใŒใ‚„ใ‚„้ขๅ€’ใใ•ใ„ใ€‚ใ€Œๅ‰ฒใ‚Šใฐใ—ใ€ใฏๆœ‰ๅŠนๆ‰‹ใฎๅˆคๅฎšใŒ็ฐกๅ˜ใงใ€ใ‹ใค็Šถๆ…‹ๆ•ฐใ‚‚ใ•ใปใฉๅคšใใชใใ€ใใ‚Œใชใ‚Šใซ้ž่‡ชๆ˜Žใชใฎใง้ข็™ฝใ„ใ€‚

ใชใŠใ€modใƒซใƒผใƒซใ‚„ๅˆ†่บซใƒซใƒผใƒซใชใฉใ‚’ๆŽก็”จใ™ใ‚‹ใจๅƒๆ—ฅๆ‰‹ใŒๅ‡บ็พใ™ใ‚‹ใŸใ‚ใ€ใŠใใ‚‰ใไธก่€…ๆœ€ๅ–„ๆ‰‹ใ‚’ๆ‰“ใคใจๅ‹่ฒ ใŒๆฑบใพใ‚‰ใชใ„ใจๆ€ใ‚ใ‚Œใ‚‹ใ€‚่ฉฆใ—ใซmodใƒซใƒผใƒซ็‰ˆใฎ็Šถๆ…‹้ท็งปๅ›ณใ‚’ๅฏ่ฆ–ๅŒ–ใ—ใฆใฟใŸใŒใ€ใจใฆใ‚‚ไบบ้–“ใซ็†่งฃใงใใ‚‹ใ‚ˆใ†ใชๅ›ณใซใชใ‚‰ใชใ‹ใฃใŸใ€‚

ใใ†ใใ†ใ€Pythonใฎใ‚ณใƒผใƒ‰ใฏnumba.jitใงๆ—ฉใใชใ‚‹ใ“ใจใŒใ‚ใ‚‹ใฎใ ใŒใ€ใ“ใฎใ‚ณใƒผใƒ‰ใฏ้€†ใซ้…ใใชใ‚‹ใ€‚numbaใŒใฉใ†ใ„ใ†ๅฎŸ่ฃ…ใ‚’ใ—ใฆใ„ใ‚‹ใ‹็Ÿฅใ‚‰ใชใ„ใŒใ€ใŠใใ‚‰ใ้–ขๆ•ฐใ”ใจใซJITใ‚ณใƒณใƒ‘ใ‚คใƒซใ—ใฆใ„ใ‚‹ใฎใ ใ‚ใ†ใ€‚ใ™ใ‚‹ใจใ€ใ€Œ้‡ใใฆๅ‘ผใณๅ‡บใ—ๅ›žๆ•ฐใŒๅฐ‘ใชใ„้–ขๆ•ฐใ€ใฏ้ซ˜้€ŸๅŒ–ใงใใ‚‹ใŒใ€ใ€Œไฝ•ๅบฆใ‚‚ๅ‘ผใถ่ปฝใ„้–ขๆ•ฐใ€ใฏJITใฎๆฉๆตใŒๅพ—ใ‚‰ใ‚Œใšใ€้€†ใซJITใ‚ณใƒณใƒ‘ใ‚คใƒซใฎๆ™‚้–“ใ ใ‘้…ใใชใ‚‹ใจๆ€ใ‚ใ‚Œใ‚‹ใ€‚ๅ†ๅธฐใฏๅ…ธๅž‹็š„ใชใ€Œใชใ‚“ใฉใ‚‚ๅ‘ผใถ่ปฝใ„้–ขๆ•ฐใ€ใชใฎใงใ€JITใ‚’ใ‹ใ‘ใ‚‹ใจ้…ใใชใฃใŸใฎใงใฏใ€ใจๆ€ใ†ใ€‚

124
62
12

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
124
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?