# deliuski/nmctlab architecture

> Architecture diagram of the GitHub repository deliuski/nmctlab, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/deliuski/nmctlab
- Repository: https://github.com/deliuski/nmctlab

## Overview

This repository is a collection of AI and data-science coursework exercises, not one integrated application. Its principal workflows are individual: run a search or game solver to produce a path or move, solve a constraint puzzle, or validate a planning sequence against an initial state and goal. Separate notebooks cover data preparation, quality, feature engineering, normalization, and logic. The simulator-to-plan relationship is explicit in its source; notebook relationships are not inferred from filenames, so those branches remain unconnected.

Main entry points: [`LAB9/sim.py`](https://github.com/deliuski/nmctlab/blob/main/LAB9/sim.py) (Plan Validator), [`BFS.py`](https://github.com/deliuski/nmctlab/blob/main/BFS.py) (Breadth-First Search), [`DFS.py`](https://github.com/deliuski/nmctlab/blob/main/DFS.py) (Depth-First Search), [`a-star.py`](https://github.com/deliuski/nmctlab/blob/main/a-star.py) (A* Search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_maze_search["Maze Search"]
  node_bfs["Breadth-First Search<br/>[BFS.py]"]
  node_dfs["Depth-First Search<br/>[DFS.py]"]
  node_astar["A* Search<br/>[a-star.py]"]
  node_pyamaze["Maze Runtime"]
end

subgraph group_puzzles_games["Puzzles and Games"]
  node_sudoku["Sudoku Solver<br/>[sudoku.py]"]
  node_ttt_ui["Tic-Tac-Toe Game<br/>[tictac2.py]"]
  node_minimax["Minimax AI<br/>[tictac2.py]"]
  node_lab3_csp["CSP Exercise<br/>[Lab3_CSP.ipynb]"]
end

subgraph group_planning["Planning Validation"]
  node_simulator["Plan Validator<br/>[sim.py]"]
  node_pddl_domains["Planning Domains"]
  node_pddl_problems["Planning Problems"]
  node_plan_files["Plan Solutions"]
end

subgraph group_data_science["Data Science"]
  node_lab1["Performance Analysis"]
  node_lab3_preprocessing["Preprocessing and Features"]
  node_lab4_data["Data Preparation"]
  node_lab5_quality["Data Quality"]
  node_normalization["Normalization"]
end

subgraph group_logic["Logic Exercises"]
  node_lab5_logic["Logic Exercise<br/>[Lab5_Logic.ipynb]"]
  node_fol["First-Order Logic<br/>[Lab4_FOLs.ipynb]"]
  node_family_prolog["Family Relations<br/>[family.pl]"]
end

node_user(("Learner"))

node_user -->|"runs"| node_bfs
node_user -->|"runs"| node_dfs
node_user -->|"runs"| node_astar
node_bfs -->|"reads and displays"| node_pyamaze
node_dfs -->|"reads and displays"| node_pyamaze
node_astar -->|"reads and displays"| node_pyamaze
node_user -->|"runs"| node_sudoku
node_user -->|"plays"| node_ttt_ui
node_ttt_ui -->|"requests move"| node_minimax
node_user -->|"validates plan"| node_simulator
node_simulator -->|"loads states"| node_pddl_problems
node_simulator -->|"reads plans"| node_plan_files

click node_bfs "https://github.com/deliuski/nmctlab/blob/main/BFS.py"
click node_dfs "https://github.com/deliuski/nmctlab/blob/main/DFS.py"
click node_astar "https://github.com/deliuski/nmctlab/blob/main/a-star.py"
click node_sudoku "https://github.com/deliuski/nmctlab/blob/main/sudoku.py"
click node_ttt_ui "https://github.com/deliuski/nmctlab/blob/main/tictac2.py"
click node_minimax "https://github.com/deliuski/nmctlab/blob/main/tictac2.py"
click node_simulator "https://github.com/deliuski/nmctlab/blob/main/LAB9/sim.py"
click node_pddl_domains "https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl"
click node_pddl_problems "https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl"
click node_plan_files "https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl"
click node_lab1 "https://github.com/deliuski/nmctlab/blob/main/Lab1%20StudentsPerformance.ipynb"
click node_lab3_preprocessing "https://github.com/deliuski/nmctlab/blob/main/Lab3%20Preprocessing%20FeatureEngineering.ipynb"
click node_lab3_csp "https://github.com/deliuski/nmctlab/blob/main/Lab3_CSP.ipynb"
click node_lab4_data "https://github.com/deliuski/nmctlab/blob/main/Lab4_DataPreparation.ipynb"
click node_lab5_quality "https://github.com/deliuski/nmctlab/blob/main/Lab5_DataQuality.ipynb"
click node_normalization "https://github.com/deliuski/nmctlab/blob/main/normalization/Lab6_Normalization.ipynb"
click node_lab5_logic "https://github.com/deliuski/nmctlab/blob/main/Lab5_Logic.ipynb"
click node_fol "https://github.com/deliuski/nmctlab/blob/main/turshilt/Lab4_FOLs.ipynb"
click node_family_prolog "https://github.com/deliuski/nmctlab/blob/main/turshilt/family.pl"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bfs,node_dfs,node_astar,node_pyamaze toneBlue
class node_sudoku,node_ttt_ui,node_minimax,node_lab3_csp toneAmber
class node_simulator,node_pddl_domains,node_pddl_problems,node_plan_files toneMint
class node_lab1,node_lab3_preprocessing,node_lab4_data,node_lab5_quality,node_normalization toneRose
class node_lab5_logic,node_fol,node_family_prolog,node_user toneIndigo
```

## Components

### Maze Search

- [Breadth-First Search](https://github.com/deliuski/nmctlab/blob/main/BFS.py): `BFS.py`
- [Depth-First Search](https://github.com/deliuski/nmctlab/blob/main/DFS.py): `DFS.py`
- [A* Search](https://github.com/deliuski/nmctlab/blob/main/a-star.py): `a-star.py`
- **Maze Runtime**

### Puzzles and Games

- [Sudoku Solver](https://github.com/deliuski/nmctlab/blob/main/sudoku.py): `sudoku.py`
- [Tic-Tac-Toe Game](https://github.com/deliuski/nmctlab/blob/main/tictac2.py): `tictac2.py`
- [Minimax AI](https://github.com/deliuski/nmctlab/blob/main/tictac2.py): `tictac2.py`
- [CSP Exercise](https://github.com/deliuski/nmctlab/blob/main/Lab3_CSP.ipynb): `Lab3_CSP.ipynb`

### Planning Validation

- [Plan Validator](https://github.com/deliuski/nmctlab/blob/main/LAB9/sim.py): `LAB9/sim.py`
- [Planning Domains](https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl): `LAB9/pddl`
- [Planning Problems](https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl): `LAB9/pddl`
- [Plan Solutions](https://github.com/deliuski/nmctlab/tree/main/LAB9/pddl): `LAB9/pddl`

### Data Science

- [Performance Analysis](https://github.com/deliuski/nmctlab/blob/main/Lab1%20StudentsPerformance.ipynb): `Lab1 StudentsPerformance.ipynb`
- [Preprocessing and Features](https://github.com/deliuski/nmctlab/blob/main/Lab3%20Preprocessing%20FeatureEngineering.ipynb): `Lab3 Preprocessing FeatureEngineering.ipynb`
- [Data Preparation](https://github.com/deliuski/nmctlab/blob/main/Lab4_DataPreparation.ipynb): `Lab4_DataPreparation.ipynb`
- [Data Quality](https://github.com/deliuski/nmctlab/blob/main/Lab5_DataQuality.ipynb): `Lab5_DataQuality.ipynb`
- [Normalization](https://github.com/deliuski/nmctlab/blob/main/normalization/Lab6_Normalization.ipynb): `normalization/Lab6_Normalization.ipynb`

### Logic Exercises

- [Logic Exercise](https://github.com/deliuski/nmctlab/blob/main/Lab5_Logic.ipynb): `Lab5_Logic.ipynb`
- [First-Order Logic](https://github.com/deliuski/nmctlab/blob/main/turshilt/Lab4_FOLs.ipynb): `turshilt/Lab4_FOLs.ipynb`
- [Family Relations](https://github.com/deliuski/nmctlab/blob/main/turshilt/family.pl): `turshilt/family.pl`

### Other components

- **Learner**

## Connections

- Learner → Breadth-First Search: runs (evidence: `BFS.py`)
- Learner → Depth-First Search: runs (evidence: `DFS.py`)
- Learner → A* Search: runs (evidence: `a-star.py`)
- Breadth-First Search → Maze Runtime: reads and displays (evidence: `BFS.py`)
- Depth-First Search → Maze Runtime: reads and displays (evidence: `DFS.py`)
- A* Search → Maze Runtime: reads and displays (evidence: `a-star.py`)
- Learner → Sudoku Solver: runs (evidence: `sudoku.py`)
- Learner → Tic-Tac-Toe Game: plays (evidence: `tictac2.py`)
- Tic-Tac-Toe Game → Minimax AI: requests move (evidence: `tictac2.py`)
- Learner → Plan Validator: validates plan (evidence: `LAB9/sim.py`)
- Plan Validator → Planning Problems: loads states (evidence: `LAB9/sim.py`)
- Plan Validator → Plan Solutions: reads plans (evidence: `LAB9/sim.py`)
