diff --git a/AI ass-3.ipynb b/AI ass-3.ipynb
new file mode 100644
index 0000000..4caa73b
--- /dev/null
+++ b/AI ass-3.ipynb
@@ -0,0 +1,201 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "authorship_tag": "ABX9TyMcrNjIsxJ1Dc0dKOWWt71n",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import heapq\n",
+ "import math\n",
+ "import random\n",
+ "\n",
+ "import subprocess\n",
+ "import sys\n",
+ "import os\n",
+ "\n",
+ "# Define required dependencies here\n",
+ "required_libraries = ['numpy', 'pygame'] # Example libraries\n",
+ "\n",
+ "def install_dependencies():\n",
+ " for lib in required_libraries:\n",
+ " try:\n",
+ " # Check if the library is installed\n",
+ " __import__(lib)\n",
+ " except ImportError:\n",
+ " # Install missing libraries using pip\n",
+ " subprocess.check_call([sys.executable, '-m', 'pip', 'install', lib])\n",
+ "\n",
+ "def run_maze_generator():\n",
+ " # Run the main executable here\n",
+ " os.system('python main.py') # Change this to your actual command to run the maze generator\n",
+ "\n",
+ "def main():\n",
+ " print(\"Checking and installing dependencies...\")\n",
+ " install_dependencies()\n",
+ " print(\"Dependencies installed successfully.\")\n",
+ " print(\"Running the maze generator...\")\n",
+ " run_maze_generator()\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " main()\n",
+ "\n",
+ "def create_maze(rows, cols):\n",
+ " maze = [[\"#\" for _ in range(cols)] for _ in range(rows)]\n",
+ "\n",
+ " def is_valid(x, y):\n",
+ " return 0 <= x < rows and 0 <= y < cols and maze[x][y] == \"#\"\n",
+ "\n",
+ " def generate(x, y):\n",
+ " directions = [(2, 0), (-2, 0), (0, 2), (0, -2)]\n",
+ " random.shuffle(directions)\n",
+ "\n",
+ " for dx, dy in directions:\n",
+ " nx, ny = x + dx, y + dy\n",
+ " if is_valid(nx, ny):\n",
+ " maze[nx][ny] = \".\"\n",
+ " maze[x + dx // 2][y + dy // 2] = \".\"\n",
+ " generate(nx, ny)\n",
+ "\n",
+ " start_x, start_y = 0, 0 # Define the start point\n",
+ " maze[start_x][start_y] = \"S\"\n",
+ "\n",
+ " goal_x, goal_y = rows - 1, cols - 1 # Define the goal point\n",
+ " maze[goal_x][goal_y] = \"G\"\n",
+ "\n",
+ " generate(start_x, start_y)\n",
+ "\n",
+ " return maze, (start_x, start_y), (goal_x, goal_y)\n",
+ "\n",
+ "def display_maze(maze):\n",
+ " for row in maze:\n",
+ " print(\" \".join(row))\n",
+ "\n",
+ "def heuristic(a, b):\n",
+ " return math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2)\n",
+ "\n",
+ "def astar(maze, start, goal):\n",
+ " rows = len(maze)\n",
+ " cols = len(maze[0])\n",
+ " open_set = []\n",
+ " heapq.heappush(open_set, (0, start))\n",
+ " came_from = {}\n",
+ " g_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " g_score[start] = 0\n",
+ " f_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " f_score[start] = heuristic(start, goal)\n",
+ "\n",
+ " while open_set:\n",
+ " current = heapq.heappop(open_set)[1]\n",
+ " if current == goal:\n",
+ " path = []\n",
+ " while current in came_from:\n",
+ " path.append(current)\n",
+ " current = came_from[current]\n",
+ " return path\n",
+ "\n",
+ " for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:\n",
+ " nx, ny = current[0] + dx, current[1] + dy\n",
+ " if 0 <= nx < rows and 0 <= ny < cols and maze[nx][ny] in (\".\", \"G\"):\n",
+ " tentative_g_score = g_score[current] + 1\n",
+ " if tentative_g_score < g_score[(nx, ny)]:\n",
+ " came_from[(nx, ny)] = current\n",
+ " g_score[(nx, ny)] = tentative_g_score\n",
+ " f_score[(nx, ny)] = tentative_g_score + heuristic((nx, ny), goal)\n",
+ " if (f_score[(nx, ny)], (nx, ny)) not in open_set:\n",
+ " heapq.heappush(open_set, (f_score[(nx, ny)], (nx, ny)))\n",
+ "\n",
+ " return None\n",
+ "\n",
+ "def mark_path(maze, path):\n",
+ " for x, y in path:\n",
+ " if maze[x][y] != \"S\" and maze[x][y] != \"G\":\n",
+ " maze[x][y] = \"*\"\n",
+ "\n",
+ "def main():\n",
+ " print(\"Enter the size of the maze (rows and columns as two numbers separated by a space):\")\n",
+ " size_input = input(\"Enter rows and columns (e.g., '5 7'): \")\n",
+ "\n",
+ " try:\n",
+ " rows, cols = map(int, size_input.split())\n",
+ " except ValueError:\n",
+ " print(\"Please enter two numbers separated by a space.\")\n",
+ " return\n",
+ "\n",
+ " if rows % 2 == 0 or cols % 2 == 0:\n",
+ " print(\"Please enter odd numbers for rows and columns.\")\n",
+ " return\n",
+ "\n",
+ " maze, start, goal = create_maze(rows, cols)\n",
+ "\n",
+ " print(\"\\nMaze:\")\n",
+ " display_maze(maze)\n",
+ "\n",
+ " path = astar(maze, start, goal)\n",
+ "\n",
+ " if path:\n",
+ " mark_path(maze, path)\n",
+ " print(\"\\nPath from start to goal:\")\n",
+ " display_maze(maze)\n",
+ " else:\n",
+ " print(\"\\nNo path found from start to goal.\")\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " main()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "z2Uo2rWZoQpY",
+ "outputId": "c7800178-1101-450b-942e-c3a047c8d315"
+ },
+ "execution_count": 2,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Checking and installing dependencies...\n",
+ "pygame 2.5.2 (SDL 2.28.2, Python 3.10.12)\n",
+ "Hello from the pygame community. https://www.pygame.org/contribute.html\n",
+ "Dependencies installed successfully.\n",
+ "Running the maze generator...\n",
+ "Enter the size of the maze (rows and columns as two numbers separated by a space):\n",
+ "Enter rows and columns (e.g., '5 7'): 3 7\n",
+ "\n",
+ "Maze:\n",
+ "S # . . . . .\n",
+ ". # . # . # #\n",
+ ". . . # . # G\n",
+ "\n",
+ "No path found from start to goal.\n"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Untitled0.ipynb b/Untitled0.ipynb
new file mode 100644
index 0000000..793f4f3
--- /dev/null
+++ b/Untitled0.ipynb
@@ -0,0 +1,163 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "authorship_tag": "ABX9TyOCMfqPqf+gmy5XRWQTNWK7",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import heapq\n",
+ "import math\n",
+ "\n",
+ "def create_maze(rows, cols):\n",
+ " maze = [[\"#\" for _ in range(cols)] for _ in range(rows)]\n",
+ "\n",
+ " def is_valid(x, y):\n",
+ " return 0 <= x < rows and 0 <= y < cols and maze[x][y] == \"#\"\n",
+ "\n",
+ " def generate(x, y):\n",
+ " directions = [(2, 0), (-2, 0), (0, 2), (0, -2)]\n",
+ " random.shuffle(directions)\n",
+ "\n",
+ " for dx, dy in directions:\n",
+ " nx, ny = x + dx, y + dy\n",
+ " if is_valid(nx, ny):\n",
+ " maze[nx][ny] = \".\"\n",
+ " maze[x + dx // 2][y + dy // 2] = \".\"\n",
+ " generate(nx, ny)\n",
+ "\n",
+ " start_x, start_y = 0, 0 # Define the start point\n",
+ " maze[start_x][start_y] = \"S\"\n",
+ "\n",
+ " goal_x, goal_y = rows - 1, cols - 1 # Define the goal point\n",
+ " maze[goal_x][goal_y] = \"G\"\n",
+ "\n",
+ " generate(start_x, start_y)\n",
+ "\n",
+ " return maze, (start_x, start_y), (goal_x, goal_y)\n",
+ "\n",
+ "def display_maze(maze):\n",
+ " for row in maze:\n",
+ " print(\" \".join(row))\n",
+ "\n",
+ "def heuristic(a, b):\n",
+ " return math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2)\n",
+ "\n",
+ "def astar(maze, start, goal):\n",
+ " rows = len(maze)\n",
+ " cols = len(maze[0])\n",
+ " open_set = []\n",
+ " heapq.heappush(open_set, (0, start))\n",
+ " came_from = {}\n",
+ " g_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " g_score[start] = 0\n",
+ " f_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " f_score[start] = heuristic(start, goal)\n",
+ "\n",
+ " while open_set:\n",
+ " current = heapq.heappop(open_set)[1]\n",
+ " if current == goal:\n",
+ " path = []\n",
+ " while current in came_from:\n",
+ " path.append(current)\n",
+ " current = came_from[current]\n",
+ " return path\n",
+ "\n",
+ " for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:\n",
+ " nx, ny = current[0] + dx, current[1] + dy\n",
+ " if 0 <= nx < rows and 0 <= ny < cols and maze[nx][ny] in (\".\", \"G\"):\n",
+ " tentative_g_score = g_score[current] + 1\n",
+ " if tentative_g_score < g_score[(nx, ny)]:\n",
+ " came_from[(nx, ny)] = current\n",
+ " g_score[(nx, ny)] = tentative_g_score\n",
+ " f_score[(nx, ny)] = tentative_g_score + heuristic((nx, ny), goal)\n",
+ " if (f_score[(nx, ny)], (nx, ny)) not in open_set:\n",
+ " heapq.heappush(open_set, (f_score[(nx, ny)], (nx, ny)))\n",
+ "\n",
+ " return None\n",
+ "\n",
+ "def mark_path(maze, path):\n",
+ " for x, y in path:\n",
+ " if maze[x][y] != \"S\" and maze[x][y] != \"G\":\n",
+ " maze[x][y] = \"*\"\n",
+ "\n",
+ "def main():\n",
+ " print(\"Enter the size of the maze (rows and columns should be odd numbers):\")\n",
+ " rows = int(input(\"Number of rows: \"))\n",
+ " cols = int(input(\"Number of columns: \"))\n",
+ "\n",
+ " if rows % 2 == 0 or cols % 2 == 0:\n",
+ " print(\"Please enter odd numbers for rows and columns.\")\n",
+ " return\n",
+ "\n",
+ " maze, start, goal = create_maze(rows, cols)\n",
+ "\n",
+ " print(\"\\nMaze:\")\n",
+ " display_maze(maze)\n",
+ "\n",
+ " path = astar(maze, start, goal)\n",
+ "\n",
+ " if path:\n",
+ " mark_path(maze, path)\n",
+ " print(\"\\nPath from start to goal:\")\n",
+ " display_maze(maze)\n",
+ " else:\n",
+ " print(\"\\nNo path found from start to goal.\")\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " main()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "vxPKfT_2gQyP",
+ "outputId": "1e02fabb-458f-4a13-c80c-78b175a0f6ed"
+ },
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Enter the size of the maze (rows and columns should be odd numbers):\n",
+ "Number of rows: 5\n",
+ "Number of columns: 5\n",
+ "\n",
+ "Maze:\n",
+ "S . . # .\n",
+ "# # . # .\n",
+ ". # . . .\n",
+ ". # . # #\n",
+ ". . . # G\n",
+ "\n",
+ "No path found from start to goal.\n"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Untitled1.ipynb b/Untitled1.ipynb
new file mode 100644
index 0000000..5dc979a
--- /dev/null
+++ b/Untitled1.ipynb
@@ -0,0 +1,165 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "authorship_tag": "ABX9TyOQQ504oBd0CTnJXtekoLCN",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import heapq\n",
+ "import math\n",
+ "\n",
+ "def create_maze(rows, cols):\n",
+ " maze = [[\"#\" for _ in range(cols)] for _ in range(rows)]\n",
+ "\n",
+ " def is_valid(x, y):\n",
+ " return 0 <= x < rows and 0 <= y < cols and maze[x][y] == \"#\"\n",
+ "\n",
+ " def generate(x, y):\n",
+ " directions = [(2, 0), (-2, 0), (0, 2), (0, -2)]\n",
+ " random.shuffle(directions)\n",
+ "\n",
+ " for dx, dy in directions:\n",
+ " nx, ny = x + dx, y + dy\n",
+ " if is_valid(nx, ny):\n",
+ " maze[nx][ny] = \".\"\n",
+ " maze[x + dx // 2][y + dy // 2] = \".\"\n",
+ " generate(nx, ny)\n",
+ "\n",
+ " start_x, start_y = 0, 0 # Define the start point\n",
+ " maze[start_x][start_y] = \"S\"\n",
+ "\n",
+ " goal_x, goal_y = rows - 1, cols - 1 # Define the goal point\n",
+ " maze[goal_x][goal_y] = \"G\"\n",
+ "\n",
+ " generate(start_x, start_y)\n",
+ "\n",
+ " return maze, (start_x, start_y), (goal_x, goal_y)\n",
+ "\n",
+ "def display_maze(maze):\n",
+ " for row in maze:\n",
+ " print(\" \".join(row))\n",
+ "\n",
+ "def heuristic(a, b):\n",
+ " return math.sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2)\n",
+ "\n",
+ "def astar(maze, start, goal):\n",
+ " rows = len(maze)\n",
+ " cols = len(maze[0])\n",
+ " open_set = []\n",
+ " heapq.heappush(open_set, (0, start))\n",
+ " came_from = {}\n",
+ " g_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " g_score[start] = 0\n",
+ " f_score = {pos: float(\"inf\") for pos in [(i, j) for i in range(rows) for j in range(cols)]}\n",
+ " f_score[start] = heuristic(start, goal)\n",
+ "\n",
+ " while open_set:\n",
+ " current = heapq.heappop(open_set)[1]\n",
+ " if current == goal:\n",
+ " path = []\n",
+ " while current in came_from:\n",
+ " path.append(current)\n",
+ " current = came_from[current]\n",
+ " return path\n",
+ "\n",
+ " for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:\n",
+ " nx, ny = current[0] + dx, current[1] + dy\n",
+ " if 0 <= nx < rows and 0 <= ny < cols and maze[nx][ny] in (\".\", \"G\"):\n",
+ " tentative_g_score = g_score[current] + 1\n",
+ " if tentative_g_score < g_score[(nx, ny)]:\n",
+ " came_from[(nx, ny)] = current\n",
+ " g_score[(nx, ny)] = tentative_g_score\n",
+ " f_score[(nx, ny)] = tentative_g_score + heuristic((nx, ny), goal)\n",
+ " if (f_score[(nx, ny)], (nx, ny)) not in open_set:\n",
+ " heapq.heappush(open_set, (f_score[(nx, ny)], (nx, ny)))\n",
+ "\n",
+ " return None\n",
+ "\n",
+ "def mark_path(maze, path):\n",
+ " for x, y in path:\n",
+ " if maze[x][y] != \"S\" and maze[x][y] != \"G\":\n",
+ " maze[x][y] = \"*\"\n",
+ "\n",
+ "def main():\n",
+ " print(\"Enter the size of the maze (rows and columns as two numbers separated by a space):\")\n",
+ " size_input = input(\"Enter rows and columns (e.g., '5 7'): \")\n",
+ "\n",
+ " try:\n",
+ " rows, cols = map(int, size_input.split())\n",
+ " except ValueError:\n",
+ " print(\"Please enter two numbers separated by a space.\")\n",
+ " return\n",
+ "\n",
+ " if rows % 2 == 0 or cols % 2 == 0:\n",
+ " print(\"Please enter odd numbers for rows and columns.\")\n",
+ " return\n",
+ "\n",
+ " maze, start, goal = create_maze(rows, cols)\n",
+ "\n",
+ " print(\"\\nMaze:\")\n",
+ " display_maze(maze)\n",
+ "\n",
+ " path = astar(maze, start, goal)\n",
+ "\n",
+ " if path:\n",
+ " mark_path(maze, path)\n",
+ " print(\"\\nPath from start to goal:\")\n",
+ " display_maze(maze)\n",
+ " else:\n",
+ " print(\"\\nNo path found from start to goal.\")\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " main()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "z2Uo2rWZoQpY",
+ "outputId": "388f3e7c-1be9-40d1-f546-d75c8b3bdddc"
+ },
+ "execution_count": 16,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Enter the size of the maze (rows and columns as two numbers separated by a space):\n",
+ "Enter rows and columns (e.g., '5 7'): 3 7\n",
+ "\n",
+ "Maze:\n",
+ "S . . # . . .\n",
+ "# # . # . # #\n",
+ ". . . . . # G\n",
+ "\n",
+ "No path found from start to goal.\n"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/source.cpp b/source.cpp
index ef8d9bd..e6dc938 100644
--- a/source.cpp
+++ b/source.cpp
@@ -26,5 +26,6 @@ int main()
cout<<"some information"<