{"id":594,"date":"2019-05-07T16:37:59","date_gmt":"2019-05-07T16:37:59","guid":{"rendered":"http:\/\/iludis.de\/?p=594"},"modified":"2019-05-07T16:47:24","modified_gmt":"2019-05-07T16:47:24","slug":"kellerautomat-in-python","status":"publish","type":"post","link":"https:\/\/iludis.de\/?p=594","title":{"rendered":"Kellerautomat in Python"},"content":{"rendered":"<p>L(PDA) = {a<sup>n<\/sup>b<sup>n<\/sup> | n&gt;0}<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-598 size-full\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2019\/05\/pda_anbn.png\" alt=\"\" width=\"1238\" height=\"284\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2019\/05\/pda_anbn.png 1238w, https:\/\/iludis.de\/wp-content\/uploads\/2019\/05\/pda_anbn-300x69.png 300w, https:\/\/iludis.de\/wp-content\/uploads\/2019\/05\/pda_anbn-768x176.png 768w, https:\/\/iludis.de\/wp-content\/uploads\/2019\/05\/pda_anbn-1024x235.png 1024w\" sizes=\"auto, (max-width: 1238px) 100vw, 1238px\" \/><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">class Stack:\r\n    def __init__(self):\r\n        self.stackliste = []\r\n        self.stacklistenlaenge = 0\r\n\r\n    def pop(self):\r\n        if self.istLeer() == False:\r\n            self.stacklistenlaenge = self.stacklistenlaenge - 1\r\n            return self.stackliste.pop()\r\n\r\n    def peek(self):\r\n        if self.istLeer() == False:\r\n            return self.stackliste[self.stacklistenlaenge - 1]\r\n\r\n    def push(self, inhalt):\r\n        self.stackliste.append(inhalt)\r\n        self.stacklistenlaenge = self.stacklistenlaenge + 1\r\n\r\n    def getStacklistenlaenge(self):\r\n        return self.stacklistenlaenge\r\n\r\n    def istLeer(self):\r\n        if self.stacklistenlaenge &lt;= 0:\r\n            return True\r\n        else:\r\n            return False\r\n#---------------------------------------------------\r\ndef Zustandsuebergangsfunktion(symbol):\r\n    global state\r\n    if state == &quot;q0&quot;:\r\n        if symbol == &quot;a&quot;:\r\n            state = &quot;q1&quot;\r\n            pdaStack.pop()\r\n            pdaStack.push(&quot;Z&quot;)\r\n            pdaStack.push(&quot;P&quot;)\r\n            return True\r\n        else:\r\n            return False\r\n    if state == &quot;q1&quot;:\r\n        if symbol == &quot;a&quot;:\r\n            pdaStack.pop()\r\n            pdaStack.push(&quot;P&quot;)\r\n            pdaStack.push(&quot;P&quot;)\r\n            state = &quot;q1&quot;\r\n            return True\r\n        elif symbol == &quot;b&quot;:\r\n            pdaStack.pop()\r\n            state = &quot;q2&quot;\r\n            return True\r\n        else:\r\n            return False\r\n    if state == &quot;q2&quot;:\r\n        if symbol == &quot;b&quot;:\r\n            if pdaStack.peek() == &quot;P&quot;:\r\n                state = &quot;q2&quot;\r\n                pdaStack.pop()\r\n                if pdaStack.peek() == &quot;Z&quot;:\r\n                    state = &quot;q3&quot;\r\n                return True\r\n        else:\r\n            return False\r\n    if state == &quot;q3&quot;:\r\n        if pdaStack.peek() == &quot;Z&quot;:\r\n            pdaStack.pop()\r\n            return True\r\n        else:\r\n            return False\r\n#---------------------------------------------------\r\ndef Akzeptor(wort):\r\n    global state\r\n    for i in range(len(wort)):\r\n        testsymbol = wort[i]\r\n        aktzustand = Zustandsuebergangsfunktion(testsymbol)\r\n        print(&quot;Zustand:     &quot;, state, &quot;\\tAktueller Stack:  &quot;, pdaStack.stackliste)\r\n        if aktzustand == False:\r\n            return False\r\n    if pdaStack.peek() == &quot;Z&quot; and state == &quot;q3&quot;:\r\n        return True\r\n    else:\r\n        return False\r\n#---------------------------------------------------\r\n\r\npdaStack = Stack()\r\npdaStack.push(&quot;Z&quot;)\r\nstate = &quot;q0&quot;\r\nprint(&quot;Startzustand:&quot;, state, &quot;\\tLeerzustand Stack:&quot;, pdaStack.stackliste)\r\n\r\nergebnis = Akzeptor(&quot;aaaaabbbbb&quot;)\r\nprint(&quot;---------\\nAkzeptiert?&quot;,    ergebnis)<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L(PDA) = {anbn | n&gt;0} class Stack: def __init__(self): self.stackliste = [] self.stacklistenlaenge = 0 def pop(self): if self.istLeer() == False: self.stacklistenlaenge = self.stacklistenlaenge &#8211; 1 return self.stackliste.pop() def peek(self): if self.istLeer() == False: return self.stackliste[self.stacklistenlaenge &#8211; 1] def push(self, inhalt): self.stackliste.append(inhalt) self.stacklistenlaenge = self.stacklistenlaenge + 1 def getStacklistenlaenge(self): return self.stacklistenlaenge def istLeer(self): if self.stacklistenlaenge&hellip; <\/p>\n<p class=\"toivo-read-more\"><a href=\"https:\/\/iludis.de\/?p=594\" class=\"more-link\">Read more <span class=\"screen-reader-text\">Kellerautomat in Python<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-594","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-uncategorized","7":"entry"},"_links":{"self":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/posts\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=594"}],"version-history":[{"count":0,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/posts\/594\/revisions"}],"wp:attachment":[{"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}