From 86b54d2e427e960833c2621e4ce60dbdb9669817 Mon Sep 17 00:00:00 2001 From: Safak Date: Tue, 17 Jun 2025 18:49:30 +0200 Subject: [PATCH] P2 init des Schachbretts und Visualisierung in der Ausgabe --- JPNB/AI_2.ipynb | 112 +++++++++++++++++++++++++++++++++++++++++++++ JPNB/AI_P1_1.ipynb | 2 +- P2.py | 44 ++++++++++++++++++ 3 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 JPNB/AI_2.ipynb create mode 100644 P2.py diff --git a/JPNB/AI_2.ipynb b/JPNB/AI_2.ipynb new file mode 100644 index 0000000..500a17f --- /dev/null +++ b/JPNB/AI_2.ipynb @@ -0,0 +1,112 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "# 8 Queen Problem\n", + "## Install Requirements\n", + "create a virtual environment in current directory by\n", + "\n", + "```\n", + "python3 -m venv .env # macos\n", + "python -m venv .env # linux\n", + "```\n", + "## Imports" + ], + "id": "3cf53c1e" + }, + { + "cell_type": "code", + "id": "2da4ea5d", + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-17T16:03:48.531191Z", + "start_time": "2025-06-17T16:03:48.529197Z" + } + }, + "source": [ + "import random" + ], + "outputs": [], + "execution_count": 1 + }, + { + "cell_type": "code", + "id": "712bccdf", + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-17T16:03:48.587628Z", + "start_time": "2025-06-17T16:03:48.585433Z" + } + }, + "source": [ + "class Field:\n", + " def __init__(self, init_state = []):\n", + " self.state = []\n", + "\n", + " if init_state is []:\n", + " for i in range(8):\n", + " self.state.append(random.randint(1,8))\n", + " print(i)\n", + " else:\n", + " self.state = init_state.copy()\n", + " \n", + " def print_field(self):\n", + " for row in range(8):\n", + " print(row)\n", + " for line in range(8):\n", + " if row+1 is self.state[line]:\n", + " print(\"Q\")\n", + " else:\n", + " print(\" \")\n", + " print(\"\\n\")\n", + " \n", + " def get_state(self):\n", + " return self.state" + ], + "outputs": [], + "execution_count": 2 + }, + { + "cell_type": "code", + "id": "25dc1068", + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-17T16:03:48.595773Z", + "start_time": "2025-06-17T16:03:48.593755Z" + } + }, + "source": [ + "def main():\n", + " new_field = Field()\n", + " new_field.print_field()\n", + "\n", + " print(\"Hello\")" + ], + "outputs": [], + "execution_count": 3 + } + ], + "metadata": { + "kernelspec": { + "display_name": ".env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/JPNB/AI_P1_1.ipynb b/JPNB/AI_P1_1.ipynb index 1f2ad95..916a891 100644 --- a/JPNB/AI_P1_1.ipynb +++ b/JPNB/AI_P1_1.ipynb @@ -386,7 +386,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.3" + "version": "3.13.5" } }, "nbformat": 4, diff --git a/P2.py b/P2.py new file mode 100644 index 0000000..a5fd1b7 --- /dev/null +++ b/P2.py @@ -0,0 +1,44 @@ +import random + +class Field: + def __init__(self, init_state=None): + self.state = [] + + if init_state is None: + for i in range(8): + self.state.append(random.randint(1,8)) # row number (0:8] => [1:8] + else: + self.state = init_state.copy() + + def print_field(self): + print(" ┌───┬───┬───┬───┬───┬───┬───┬───┐") + for row in range(8,0,-1): # (0:8] + row_string = "" + for line in range(8): + if row is self.state[line]: # is there a Queen in this line (spalte) in this row + row_string += "Q │ " + else: + row_string += " │ " + print(f"{row} | {row_string}") + if row > 1 : print(" ├───┼───┼───┼───┼───┼───┼───┼───┤") + + print(" └───┴───┴───┴───┴───┴───┴───┴───┘") + print(" A B C D E F G H ") + + print(self.state) + + def get_state(self): + return self.state + + def collisions(self, current_state): + # wagerechte haben die gleiche zahl stehe + # diagonale haben einen wert der um den abstand gemindert ist => gleichseitiges rechtwinkliges Dreieck + # Beachte die Spalten/ Linien Nr ist um eins verringert [0, 1, ...,7] + return 0 + + +def main(): + new_field = Field() + new_field.print_field() + +main() \ No newline at end of file