{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Woche 2 - 17.-23. Oktober 2022 #\n",
    "\n",
    "Herzlich willkommen zur 2. Woche!\n",
    "\n",
    "## Agenda ##\n",
    "\n",
    "- [x] Struktur\n",
    "- [x] Aufwärme\n",
    "- [x] Seminaraufgaben 2.x\n",
    "- ~~[ ] Besprechung von HA 1.x~~\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# imports\n",
    "import os;\n",
    "import sys; \n",
    "\n",
    "# NOTE: need this to force jupyter to reload imports:\n",
    "for key in list(sys.modules.keys()):\n",
    "    if key.startswith('src.'):\n",
    "        del sys.modules[key];\n",
    "\n",
    "os.chdir(os.path.dirname(_dh[0]));\n",
    "sys.path.insert(0, os.getcwd());\n",
    "\n",
    "from src.thirdparty.maths import *;\n",
    "from src.thirdparty.render import *;\n",
    "\n",
    "from src.maths.diagrams import *;\n",
    "from src.maths.sets import *;\n",
    "from src.widgets import *;\n",
    "\n",
    "np.random.seed(8007253); # zur Wiederholbarkeit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Userinput - Anzahl der Funktionen\n",
    "fnames   = ['f', 'g', 'h', 'i', 'j'];\n",
    "setnames = ['X', 'Y', 'Z', 'U', 'V', 'W'];\n",
    "ctrl = widgets.IntSlider(value=1, description=f'# Funktionen', min=1, max=len(fnames));\n",
    "display(ctrl);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Widget - Mengen und Funktionen\n",
    "FunctionDiagramWidget(N=ctrl.value, fnames=fnames, setnames=setnames).run();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ohne Zufallserzeugung:\n",
    "X = ['a', 'b', 'c', 'd', 'e'];\n",
    "Y = [2, 3, 5, 7, 11, 13, 17];\n",
    "Z = ['α', 'β', 'γ', 'δ'];\n",
    "f = [('a', 5), ('b', 5), ('c', 17), ('d', 2), ('e', 5)]\n",
    "g = [(2, 'γ'), (3, 'α'), (5, 'β'), (7, 'δ'), (11, 'β'), (13, 'γ'), (17, 'β')];\n",
    "comp = Functions(\n",
    "    Function(name=('f', 'X', 'Y'), domain=X, codomain=Y, fct=f),\n",
    "    Function(name=('g', 'Y', 'Z'), domain=Y, codomain=Z, fct=g),\n",
    ");\n",
    "comp.draw(show_labels=True);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.10.8 64-bit",
   "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.10.8"
  },
  "vscode": {
   "interpreter": {
    "hash": "98590ff4fe04c8543246b2a01debd3de3c5ca9b666f43f1fa87d5110c692004c"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
