From a8c763010a12ba44c95911e147a539296723e5d8 Mon Sep 17 00:00:00 2001 From: Isaac Shoebottom Date: Sat, 6 Apr 2024 23:15:11 -0300 Subject: [PATCH] A7 --- Assignment 5.ipynb | 165 +++++++++++++++++++++++++++++++++++++++------ Assignment 7.ipynb | 135 +++++++++++++++++++++++++++++++++++++ 2 files changed, 279 insertions(+), 21 deletions(-) create mode 100644 Assignment 7.ipynb diff --git a/Assignment 5.ipynb b/Assignment 5.ipynb index 539801a..93d9a04 100644 --- a/Assignment 5.ipynb +++ b/Assignment 5.ipynb @@ -8,7 +8,7 @@ "from automata.fa.nfa import NFA\n", "from IPython.display import Math\n", "\n", - "debug = False\n", + "debug = True\n", "\n", "def regex_test(regex: str, inputs: list[str]):\n", " re.validate(regex)\n", @@ -30,8 +30,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.229475Z", - "start_time": "2024-03-02T00:28:44.047364Z" + "end_time": "2024-03-22T22:22:26.498255Z", + "start_time": "2024-03-22T22:22:26.217210Z" } }, "id": "aa9fd8c82c66ac9a", @@ -39,7 +39,17 @@ }, { "cell_type": "code", - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'aaaab', 'a', 'b', 'aaab', 'ab', 'aaaa', 'aab'}\n", + "['baaaa', 'ba', 'baab', 'baaaaa', 'baa', 'baaab']\n", + "['', 'b', 'bb', 'bbb', 'bba', 'ba', 'bab']\n" + ] + } + ], "source": [ "l1 = ['b', 'ba']\n", "l2 = ['a', 'aab', 'aaaa']\n", @@ -79,8 +89,8 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.236163Z", - "start_time": "2024-03-02T00:28:44.231091Z" + "end_time": "2024-03-22T22:22:26.505139Z", + "start_time": "2024-03-22T22:22:26.499628Z" } }, "id": "initial_id", @@ -131,6 +141,17 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "aabb: False\n", + "aabbbb: False\n", + "aabbbbb: True\n", + "aaabbbbbb: False\n", + "aaaabbbbbbbbb: True\n" + ] + }, { "data": { "text/plain": "", @@ -158,8 +179,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.245325Z", - "start_time": "2024-03-02T00:28:44.237457Z" + "end_time": "2024-03-22T22:22:26.515494Z", + "start_time": "2024-03-22T22:22:26.506412Z" } }, "id": "c0d81b8fb61431de", @@ -178,6 +199,22 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ab: True\n", + "bab: False\n", + "bbab: True\n", + "bbbabb: True\n", + "bbbabbb: False\n", + "abb: False\n", + "abbb: True\n", + "ba: True\n", + "bba: False\n", + "bbba: True\n" + ] + }, { "data": { "text/plain": "", @@ -210,8 +247,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.251244Z", - "start_time": "2024-03-02T00:28:44.246625Z" + "end_time": "2024-03-22T22:22:26.522964Z", + "start_time": "2024-03-22T22:22:26.517188Z" } }, "id": "75f2af38daefc05b", @@ -241,6 +278,36 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ": True\n", + "0: True\n", + "1: True\n", + "00: True\n", + "01: True\n", + "10: True\n", + "11: True\n", + "000: True\n", + "001: True\n", + "010: True\n", + "011: True\n", + "100: True\n", + "101: True\n", + "0000: True\n", + "0001: True\n", + "0010: True\n", + "0011: True\n", + "0100: True\n", + "0101: True\n", + "0110: True\n", + "0111: True\n", + "1000: True\n", + "00000: False\n", + "11111: False\n" + ] + }, { "data": { "text/plain": "", @@ -287,8 +354,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.258942Z", - "start_time": "2024-03-02T00:28:44.253012Z" + "end_time": "2024-03-22T22:22:26.531449Z", + "start_time": "2024-03-22T22:22:26.524511Z" } }, "id": "404b569fb1f1b3dd", @@ -307,6 +374,17 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0100001: True\n", + "0100000100001: True\n", + "1000001: True\n", + "00000010000100000: True\n", + "1000100001: False\n" + ] + }, { "data": { "text/plain": "", @@ -336,8 +414,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.265618Z", - "start_time": "2024-03-02T00:28:44.260279Z" + "end_time": "2024-03-22T22:22:26.538114Z", + "start_time": "2024-03-22T22:22:26.532887Z" } }, "id": "91ecde46ccfd6037", @@ -366,6 +444,15 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "00100: True\n", + "00100: True\n", + "00100: False\n" + ] + }, { "data": { "text/plain": "", @@ -380,6 +467,7 @@ "# Let R1 be the regular expression 1* 0 1* 0 1* 0 1* 0 1*\n", "# Let R2 be the regular expression 0* (1 ∪ ε) 0* (1 ∪ ε) 0* (1 ∪ ε) 0* (1 ∪ ε) 0*\n", "# Let R3 be the regular expression (0 ∪ 1)* 00 (0 ∪ 1)\n", + "# Was not supposed to be accepted by all, only bt 2 and 3\n", "r1 = '1*01*01*01*01*'\n", "r2 = '0*(1|())0*(1|())0*(1|())0*(1|())0*'\n", "r3 = '(0|1)*00(0|1)'\n", @@ -393,8 +481,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.272009Z", - "start_time": "2024-03-02T00:28:44.267238Z" + "end_time": "2024-03-22T22:22:26.547221Z", + "start_time": "2024-03-22T22:22:26.539392Z" } }, "id": "e3c432e6556167c7", @@ -423,6 +511,22 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p: True\n", + "cp: True\n", + "pc: True\n", + "cpc: True\n", + "ccpcc: True\n", + "ccpccpcc: True\n", + "ccpccpccpcc: True\n", + "ccpccpccpccpcc: True\n", + "cpcpcpcpcpc: True\n", + "pp: True\n" + ] + }, { "data": { "text/plain": "", @@ -446,7 +550,7 @@ " 'ccpccpccpcc',\n", " 'ccpccpccpccpcc',\n", " 'cpcpcpcpcpc',\n", - " '',\n", + " 'pp', # Not supposed to be here\n", "]\n", "if debug:\n", " regex_test(q33, inputs)\n", @@ -455,8 +559,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.278114Z", - "start_time": "2024-03-02T00:28:44.273285Z" + "end_time": "2024-03-22T22:22:26.555155Z", + "start_time": "2024-03-22T22:22:26.549229Z" } }, "id": "5b8c9ad34523ea81", @@ -485,6 +589,25 @@ { "cell_type": "code", "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: True\n", + "1: True\n", + "00: True\n", + "01: True\n", + "10: True\n", + "11: True\n", + "000: False\n", + "001: False\n", + "010: False\n", + "0000: True\n", + "00001: True\n", + "001100: False\n", + "011001110: False\n" + ] + }, { "data": { "text/plain": "", @@ -520,8 +643,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-03-02T00:28:44.284200Z", - "start_time": "2024-03-02T00:28:44.279548Z" + "end_time": "2024-03-22T22:22:26.563180Z", + "start_time": "2024-03-22T22:22:26.556508Z" } }, "id": "6aa37e012a2b072d", diff --git a/Assignment 7.ipynb b/Assignment 7.ipynb new file mode 100644 index 0000000..ce45d81 --- /dev/null +++ b/Assignment 7.ipynb @@ -0,0 +1,135 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a90ef9f8022df10e", + "metadata": { + "collapsed": false + }, + "source": [ + "# Question 42\n", + "## c.\n", + "$$S \\rightarrow 0S0 | 0S1 | 1S0 | 1S1 | 1$$\n", + "\n", + "## d.\n", + "$$S \\rightarrow X | \\epsilon$$\n", + "$$X \\rightarrow aXdd | Y$$\n", + "$$Y \\rightarrow bYd | Z$$\n", + "$$Z \\rightarrow cZ | \\epsilon$$\n", + "\n", + "## e.\n", + "$$S \\rightarrow 0S | 1S | 00S | 01S | 10S | 11S | 000S | 001S | 010S | 011S| 100S | 101S | 111S | \\epsilon$$" + ] + }, + { + "cell_type": "markdown", + "id": "2d1690ef", + "metadata": {}, + "source": [ + "$\\pagebreak$" + ] + }, + { + "cell_type": "markdown", + "id": "9a7c595f", + "metadata": {}, + "source": [ + "# Question 43\n", + "## a.\n", + "$$B = \\{ w \\in \\{a, b, c\\}^* | |w| = 4n+1, n \\in \\mathbb{Z}^{\\text{nonneg}} \\}$$\n", + "\n", + "## b.\n", + "$$B = \\{ 0^2x1^3y+2 | x, y \\in \\mathbb{Z}^{\\text{nonneg}} \\}$$\n", + "\n", + "## c.\n", + "$$B = \\{ 0^x1^y | x \\neq y \\text{ and } x, y \\in \\mathbb{Z}^{\\text{nonneg}} \\}$$" + ] + }, + { + "cell_type": "markdown", + "id": "c8d0ce5a", + "metadata": {}, + "source": [ + "$\\pagebreak$" + ] + }, + { + "cell_type": "markdown", + "id": "8d439d76", + "metadata": {}, + "source": [ + "# Question 44\n", + "## a.\n", + "$$B = \\{ 0^x1^y | y = x + 1 \\text{ and } x, y \\in \\mathbb{Z}^{\\text{nonneg}} \\}$$\n", + "\n", + "## c.\n", + "$$B = \\{ 0^x1^y | y = 3x \\text{ and } x, y \\in \\mathbb{Z}^{\\text{nonneg}} \\}$$" + ] + }, + { + "cell_type": "markdown", + "id": "323bea35", + "metadata": {}, + "source": [ + "$\\pagebreak$" + ] + }, + { + "cell_type": "markdown", + "id": "56466c7f", + "metadata": {}, + "source": [ + "# Question 45\n", + "1. First the machine should move left to right looking for a \"b\". If it does not find one it moves to the reject state and if it finds one it will:\n", + " - Erase the \"b\"\n", + " - Move back to the start\n", + " - Look for an \"a\". If it finds one it will repeat step 1. If it does not find one, it will move to the accept state" + ] + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "$\\pagebreak$", + "id": "e9fba2ef63041f08" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "# Question 47\n", + "1. First the machine should check if the length of the string is at least 6 and if not, reject\n", + "2. Copy 0 or more symbols to tape 2 from tape 1\n", + "3. Erase all of tape 2\n", + "4. Copy 3 symbols to tape 2 from tape 1\n", + "5. Copy 0 or more symbols to tape 3 from tape 1\n", + "6. Erase of all of tape 3\n", + "7. Copy 3 symbols to tape 3 from tape 1\n", + "8. Compare tapes 2 and 3 and if they match, accept, otherwise reject\n", + "\n", + "The nondeterminism of this machine is the copying 0 or more symbols, as this accounts for strings u and x, as they can be any length including 0, and the machine can make a choice of 0 or more." + ], + "id": "7b6c771c1004546f" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}