{ "cells": [ { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "d12895fc-e9d2-4450-82ad-4c1a0f0377f6" }, "slideshow": { "slide_type": "slide" } }, "source": [ "[![MLR](mlr3.png)](https://ipvs.informatik.uni-stuttgart.de/mlr/marc/teaching/16-ArtificialIntelligence/)\n", "\n", "# Introduction to the Tutorials\n", "[AI Class Homepage](https://ipvs.informatik.uni-stuttgart.de/mlr/marc/teaching/16-ArtificialIntelligence/), [This document (non-interactive version): https://goo.gl/wpedFn](https://goo.gl/wpedFn)" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "dfd8bc63-c0b1-4a97-818e-8d2eabe4091d" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Organisation of the Tutorials\n", "\n", " - Coding-Exercises\n", " - Teams of 3\n", " - Turned in using gitlab\n", " - Votier-Exercises \n", " - Everyone on his/her own\n", " - Each tutorial mark the exercises you have done\n", " - Mandatory requirements\n", " - 50% of all Coding-Exercises\n", " - 50% of all Votier-Exercises" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "d87ede56-acd8-4ab4-9b2a-267dfae83a16" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "## Learning Goals for this Lecture\n", "You should be able to complete the AI exercises (from a programming language point of view).\n", "\n", "1. \"Understand basic Python\"\n", "- Be familiar with Python's Unittests and Doctests\n", "- Git pull/push your execises and solutions\n", "\n", "There are small programming exercises to give you feedback! Try them!" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "06799276-d239-4c70-95c9-0cd459fbc0c9" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Prerequisite" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "e47a821a-60b4-4faf-abac-5de9f3e6f2d6" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Installation (python)\n", "\n", "- **For Beginners: [Anaconda 2 (python 2.7)](https://www.continuum.io/downloads) (All OS supported)** \n", "Full featured scientific python distribution. Already contains the important packages. \n", "\n", "\n", "- **Linux users: System python 2 and packages** \n", "Use your systems package manager to install python 2 and packages (numpy required).\n", "\n", "\n", "- **Know what your doing?: python virtual environment** \n", "Install packages with pip (numpy required). Always up to date\n", "\n", "\n", "- **(Optional) Interactive and REPL: python (installed), ipython, bpython, jupyter notebook**\n" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "b4629796-5f51-4e0c-88d0-59efa1bfe586" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Installation (git)\n", "- **Windows: https://git-scm.com/download/win**\n", "- **Linux: Use system git or build it yourself.**" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "752c0a36-27a4-434b-b965-4c463531cde1" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Installation (IDE/Editor)\n", "- **Whatever you want**\n", "- **PyCharm (https://www.jetbrains.com/pycharm/)**\n", "- **Spyder (Included in Anaconda)**\n", "- **vim + jedi-vim (https://github.com/davidhalter/jedi-vim)**" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "1dfa1937-8105-4c11-9ec1-d1bbf9531822" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Python Tutorial" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "6cd29b27-0812-46a1-958b-9a7a33c8e894" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Things to mention\n", "\n", "- Indentation: use **4 spaces**, *do not use tabs*!\n", "- Python is different from Java: you don't need classes\n", "- [PEP8](http://legacy.python.org/dev/peps/pep-0008/) style guide \n", "\n", "\n", "#### **python2** vs **python3**. $\\Rightarrow$ Use python 2.7 for the exercises" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "b25229ca-6cd7-4ba8-99bd-445472cb10a0" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Please Help Yourself" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "cc003ad3-5ca2-4e18-89e5-7d4b16930a50" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "help(range)\n", "type?" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "8efc1a03-80cb-4800-8112-68f6c732e66b" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Control Flow" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "d84af875-86aa-403a-a562-92d45711c40d" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# if/elif/else\n", "a = 6\n", "if a > 5:\n", " print \"bigger than 5\"\n", "elif a == 5:\n", " print \"FIVE\"\n", "else:\n", " print 'something else: ' + str(a)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "244bed87-f877-4c34-9286-1aa4656c0549" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "a = 4\n", "a = \"bigger\" if a > 3 else \"smaller\"\n", "a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "c2612fa3-97f6-4597-a2ea-dc6f6ccd903a" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Java:\n", "# int n = 6\n", "# for (int i = 2; i < n; i++) {\n", "# System.out.println(i);\n", "# }\n", "n = 6\n", "for i in range(2,n):\n", " print i" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "c07daf28-8f7e-451d-a285-cce3cd5df359" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "range(2,10,2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "6b11abb0-e7d4-4be0-953e-d01a5e535d71" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "movies = [\"Her\", \"Moon\", \"Pacific Rim\", \"Robot and Frank\"]\n", "print len(movies)\n", "for movie in movies:\n", " print movie" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "4b631bd6-3ff3-472f-a268-d47ae1111a76" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "for i, movie in enumerate(movies):\n", " print i, movie" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "ab5e5745-f025-4b2a-bef6-d1040bcf0e6f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "for i, movie in zip(range(len(movies)), movies):\n", " print i, movie" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "6e236b23-dfe4-46dc-8a94-cb50a0274011" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print enumerate(movie)\n", "print zip(range(len(movies)), movies)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "7d399080-2ab9-4434-9478-7952820c09ff" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# while\n", "i = 0\n", "while True:\n", " while True:\n", " print i\n", " i += 1\n", " if i > 5:\n", " break\n", " print \"outer\"\n", " break" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "872b44cc-4d3b-4059-9bdf-762d5d397dd9" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Data Structures" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "2b40388f-e218-4fee-b482-cc2949aca3ba" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# numbers\n", "print type(1)\n", "print type(.1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "6455ea4a-3d80-4179-a398-1532471f149f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Strings\n", "'this is a string'" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "0e3879d4-32f1-4d20-9d1f-db03facfd36f" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "\"this is also a string\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "23087ad7-b2a5-4354-9c0e-c022d134c02c" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "\"\"\"This is a string as well\n", "\n", "A multi-line string\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "03fd621d-0671-4e62-b746-0664c73c489f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# list\n", "i = [1, 2, 3, 4]\n", "print list(i)\n", "print [2, 4]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "1c548566-da61-4c09-9d3a-ca9dbe91af3c" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "['something', 5, 5.5]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "5e78f362-629b-4a23-9fc8-031ccd7bb8d2" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "movies = [\"Her\", \"Moon\", \"Pacific Rim\", \"Robot and Frank\"]\n", "movies" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "c8060d59-1226-4d88-9f5d-8a47f7a93fb2" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "movies.append(\"Wall-E\")\n", "movies" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "e02bee8b-74ee-4ec6-9e4d-56a8c4d62a18" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "movies = movies + [\"Nummer 5\", \"I, Robot\", \"2001\"]\n", "movies" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "5181c555-6086-4880-b29a-2348f6511da9" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import copy\n", "copy.deepcopy(movies)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "f891d975-d161-44ae-9ca7-8d3ccf5fc215" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# slicing\n", "print movies\n", "print movies[0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "b76d6d0a-8c53-494f-971d-2ee4b070b073" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print movies[1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "6d52debd-47eb-458a-95cf-bc469270a19b" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "print movies[0:2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "847eeb0e-b03b-48c8-8150-ff18c0b42c76" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print movies[:2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "a34e2f76-7e51-4161-a489-f8167c4c51d7" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print movies[-1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "ecb79b65-68ae-4df6-b38e-ebef2e73ede3" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print movies[-2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "85d3adf4-e3a1-4613-a4bb-9109932ed308" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "print movies[3::2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "0019dbe6-0c8c-4983-92a8-4d986d3811f9" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Dictionaries\n", "print dict()\n", "print {}" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "53123ca1-0144-48bf-bc73-d920e8db178c" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "d = {\"Her\": 4,\n", " \"Moon\": 5,\n", " \"Pacific Rim\": 5,\n", " \"Robot and Frank\": 4.,\n", "}\n", "d" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "67494a06-e358-4639-9d84-752d72f60064" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "d[\"Her\"]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "5eae6e1d-78f3-4f72-b3eb-0d3f5c98d217" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "\"Her\" in movies" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "30af7edc-f671-4a0d-9337-eda616ea1d79" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "d.keys()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "975c87bf-95ec-4ffd-b18f-78550a6af2f6" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "type(d.values())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "ff557636-596c-4320-883e-d2748ba037ee" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "for (key, value) in d.items():\n", " print key, value" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "3aa19415-9834-48f2-94e6-708b759589bb" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# tuples\n", "3, 4" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "76110d90-aa96-44b7-99f6-ee89749a4894" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "(3, 4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "69329572-5b2e-4b4c-b2f5-2e2031cd1cd8" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "type((3,4))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "7b595eb7-53be-40e3-8974-85eebf7270a1" }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "t = 3, 4, 3\n", "print t[0]\n", "print t[1]\n", "print t[2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "74273d87-a08a-4770-af40-ae9c1891cc3a" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# set\n", "set([3, 0, -4, 15, 3, 2, 2, 1, 15])" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "4f8f38d7-5ee2-4f4d-975f-d0df0a8c8ad8" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## List Comprehensions" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "b72279db-ddd7-4063-acec-553613169d33" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "[i for i in range(10)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "0f87d8ac-9989-4171-9893-57f8d04c8fe7" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "[i*i for i in range(10)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "e64ae765-aed7-4f26-9085-1c2976a585c3" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "[i for i in range(10) if i % 2 == 0]" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "cfa92050-a4d2-431a-8083-b1cf835ae4a5" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's implement the [entropy function](http://en.wikipedia.org/wiki/Entropy_%28information_theory%29#Definition) \n", "\n", "$$\n", " H(X) = - \\sum_i P(x_i) \\log P(x_i)\n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "bb0f357a-101d-4ed7-a3ab-68ecac1b2084" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "from math import log\n", "\n", "X = [.5, .5]\n", "\n", "def entropy(X):\n", " return -sum([x * log(x) for x in X])\n", "\n", "\n", "entropy(X)" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "8e5f372f-f4cd-4411-9cbe-a23cdf7ed1d6" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Compute Pi using the [Wallis product](http://en.wikipedia.org/wiki/Wallis_product): \n", "\n", "$$\n", "\\pi \\approx 2 \\prod_{i=1}^{\\infty} \\frac{4i^2}{4i^2 -1}\n", "$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "bde71215-d5bd-47d5-9689-6af0c59e52f8" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import operator\n", "\n", "def prod(iterable):\n", " return reduce(operator.mul, iterable, 1)\n", "\n", "\n", "def pi(n):\n", " # a**b = a to power b\n", " return 2 * prod([(4 * i**2)/(4 * i**2 - 1) for i in range(1, n)])\n", "\n", "\n", "print pi(2), pi(10), pi(100)" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "27aa26a3-6e82-4155-8822-41eecfc329c1" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Numpy & Matplotlib" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "fac61ad2-464a-40ec-b1aa-bb0ab03746a6" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "bf21c6b2-3e3e-4362-8060-e0ed293b2500" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "np.zeros((3, 3))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "6a3f6b1a-2dae-449f-befc-cabd265c058a" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "A = np.ones((3, 3))\n", "B = np.random.random((3, 3))\n", "A + B" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "e3c3046e-67d5-482f-b19a-5435d0cb4896" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "A * B" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "8a619477-ff9a-42bc-86fc-b311bea7d0eb" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "A.dot(B) # matrix multiplication\n", "np.dot(A, B) " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "983f1a79-bdad-4eaf-8445-0ef5e13ff78a" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "X = np.matrix( ((1,2), (5, -1)) )\n", "Y = np.matrix( ((1,2), (5, -1)) )\n", "\n", "X * Y" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "3c03d53b-9ce5-4a41-8f1c-f8eb28c0913c" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$\\rightarrow$ use arrays" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "526af6d0-b18a-4607-b982-d6dde7b7e2c6" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Wont be used in the exercises\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "plt.matshow(B);" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "c64bfb29-d2aa-4455-b146-f900cb5f69e9" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Exercises: [project euler](https://projecteuler.net/)\n", "These exercises are meant as feedback for you. You should be able to use python to solve the exercises. You could also try and solve some old *\"Datenstrukturen und Algorithmen\" exercises*." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "a87ce2b1-6cc7-4d83-9537-32a1e88dbf3f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "\"\"\"\n", "Project Euler Problem #1\n", "=========================\n", "\n", "If we list all the natural numbers below 10 that are multiples of 3 or 5,\n", "we get 3, 5, 6 and 9. The sum of these multiples is 23.\n", "\n", "Find the sum of all the multiples of 3 or 5 below 1000.\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "39a3bf91-b780-41f0-9bc7-08b8e084013f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "\"\"\"\n", "Project Euler Problem #2\n", "=========================\n", "\n", "Each new term in the Fibonacci sequence is generated by adding the\n", "previous two terms. By starting with 1 and 2, the first 10 terms will be:\n", "\n", " 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...\n", "\n", "Find the sum of all the even-valued terms in the sequence which do not\n", "exceed four million.\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "bdf5aa9d-0ad0-4d7e-8ec9-69767aac949d" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "\"\"\"\n", "Project Euler Problem #4\n", "=========================\n", "\n", "A palindromic number reads the same both ways. The largest palindrome made\n", "from the product of two 2-digit numbers is 9009 = 91 * 99.\n", "\n", "Find the largest palindrome made from the product of two 3-digit numbers.\n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "37b33e06-e577-4146-90c9-1839a6bef1c1" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Python: Functions and Classes" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "fba0ab5c-2c39-41bd-abb1-afae340e885a" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def square(x):\n", " \"\"\"Documentation of square.\"\"\" \n", " return x * x\n", "\n", " \n", "square(5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "c9e6061c-0aa6-49d0-af8e-fcc295c1d963" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "class Node(object):\n", " \"\"\"Doc of the class.\n", " \n", " Sometimes the constructor is documented here.\n", " \n", " \"\"\"\n", " def __init__(self, value=None, left=None, right=None):\n", " self.value = value\n", " self.left = left\n", " self.right = right\n", " \n", " def cut(self):\n", " \"\"\"Doc of the function cut.\"\"\"\n", " self.left = None\n", " self.right = None\n", "\n", " \n", "tree = Node(\"lecture\", Node(\"python\"), Node(\"git\", Node(\"ki\")))\n", "print tree\n", "print tree.value\n", "print tree.right.left.value" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "d11b00e4-8aee-4906-be8b-7995b7f03b2a" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "type(None)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "e383974d-d48e-4d9d-b441-895be38c6a43" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "class Node(object):\n", " def __init__(self, value=None, left=None, right=None):\n", " self.value = value\n", " self.left = left\n", " self.right = right\n", " \n", " def cut(self):\n", " self.left = None\n", " self.right = None\n", " \n", " def children(self):\n", " return self.left, self.right\n", " \n", " def __str__(self):\n", " return 'useless str method'\n", " \n", "tree = Node(\"lecture\", Node(\"python\"), Node(\"git\"))\n", "print tree" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "b8d190cd-dbf1-4172-93eb-8c818a42fe08" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Doctest and Unittests" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpresent": { "id": "ab2c05e7-9935-46d4-b399-a78f43b6076b" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# %load fib.py\n", "def fibbonacci(n):\n", " \"\"\"\n", " The n-th Fibbonacci number is the sum of the previous two fibbonacci\n", " numbers where the first and second Fibbonacci number are 1.\n", "\n", " :math: F_n = F_{n-1} + F_{n-2}\n", "\n", " Examples:\n", " ---------\n", " >>> fibbonacci(1)\n", " 1\n", " >>> fibbonacci(2)\n", " 1\n", " >>> fibbonacci(3)\n", " 2\n", " >>> fibbonacci(4)\n", " 3\n", "\n", " \"\"\"\n", " if n == 1:\n", " return 1\n", " elif n == 2:\n", " return 1\n", " else:\n", " return fibbonacci(n-1) + fibbonacci(n-2)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "daebae9e-9706-4d13-8520-7f277a93970e" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# executing the doctests\n", "!python -m doctest -v fib.py" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "268c7b9d-5460-4bb1-aa89-3d043386225f" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# %load test_fib.py\n", "import unittest\n", "from fib import fibbonacci\n", "\n", "\n", "class TestFibbonacci(unittest.TestCase):\n", " def test_definition(self):\n", " self.assertEqual(fibbonacci(1), 1)\n", " self.assertEqual(fibbonacci(2), 1)\n", "\n", " def test_calculated_values(self):\n", " self.assertEqual(fibbonacci(5), 5)\n", " self.assertEqual(fibbonacci(6), 8)\n", "\n", "\n", "if __name__ == '__main__':\n", " unittest.main()\n", "\n", " unitte" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "70831706-350e-4a2e-b416-45489cf6030e" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "!python test_fib.py" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "nbpresent": { "id": "769bf03e-6c93-4411-a629-4d3339c16a5c" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "!python -m unittest discover -v" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "7523fc0d-25d8-4e92-8005-8039d1eb4698" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Gitlab" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "be8aae5f-3676-468d-a7ac-565aeb7a874d" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Setup Gitlab \n", "\n", "\n", "- **Check your mail and confirm your account**\n", "\n", "\n", "- **Change your password on the login site (Forgot your password?)**\n", "\n", "\n", "- **Login to gitlab using your username and new password**" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "de3b5efa-9f5c-4925-b2d9-f6b0eff9e9a0" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Setup SSH\n", "\n", "- **Create a SSH key(if you don’t already have one)**\n", "```\n", "$ ssh-keygen -t rsa -C \"\"\n", "```\n", "\n", "\n", "- **On the gitlab website open \"Profile Settings\">\"SSH Keys\">\"Add SSH Key\".**\n", "\n", "\n", "- **Copy the entire content of the public key (Linux: ~/.ssh/id_rsa.pub, Windows: $\\left$\\\\.ssh\\id_rsa.pub)**\n", "```\n", "$ cat ~/.ssh/id_rsa.pub % print to console\n", "```\n", "\n", "- **Paste the key into the key text area (gitlab), and choose a title**" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "def05353-a723-4b7c-a807-a935ac5400a4" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Test it\n", "\n", "- **You can test whether it everything is setup correctly using**\n", "```\n", "$ ssh git@animal.informatik.uni-stuttgart.de\n", "```\n", "- **You are done ! (It may take a several minutes before a new key is recognized)**\n" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "446575e7-d6bb-48c3-8194-d07f94fbac4e" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Git" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "4a4ed1bc-6aa0-45cd-910b-845e7398107c" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![git concepts](git_concepts.png)\n", "**git pull** is the same as a **git fetch** followed by a **git merge**." ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "bb8570b4-33c5-480e-a492-35bb3b3322d3" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Setup git\n", "```\n", "$ git config --global user.name \"John Doe\"\n", "\n", "$ git config --global user.email johndoe@example.com\n", "\n", "$ git config --global color.ui true\n", "```\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "c4c8b755-55d9-4a29-96c3-c1a0753a79ff" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Get Started\n", "\n", "- **Clone a repository** \n", "\n", "```\n", "$ git clone git@animal.informatik.unistuttgart.de:ai_lecture/group_.git\n", "```" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "64559dbf-1496-442b-98df-fcdceb933eb6" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Workflow\n", "\n", "- **Fetch commits from the remote repo and merge any changes.**\n", "```\n", "$ git pull\n", "```\n", "\n", "- **Add all new files to the the staging area**\n", "```\n", "$ git add . \n", "```\n", "\n", "\n", "- **Commit all changes to the local repository**\n", "```\n", "$ git commit -m \"Your commit message\"\n", "```\n", "\n", "\n", "- **Push commits to the remote repository.** \n", "```\n", "$ git push\n", "```" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "2e0d695f-a58b-4bad-a5bf-979a8897e9a4" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Other Important Commands\n", "\n", "- **Returns the status of the working directory vs the repository (e.g. changes present?, new files?, removed files?)**\n", "```\n", "$ git status\n", "```\n", "\n", "- **Removes a file from the staging area and working directory.**\n", "```\n", "$ git rm [-r] \n", "```" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "ac2fd93e-9513-4869-9b15-f692772ee7e0" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Exercises\n", "**[Github git tutorial](https://try.github.io/levels/1/challenges/1)**" ] }, { "cell_type": "markdown", "metadata": { "nbpresent": { "id": "81f0a76d-02a7-4783-8db5-d0af4661de14" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# References\n", "**Python:**\n", "- https://scipy-lectures.github.io/index.html\n", "- http://learnxinyminutes.com/docs/python/\n", "- https://docs.python.org/2/tutorial/\n", "\n", "**Git:**\n", "- https://try.github.io/levels/1/challenges/1\n", "- http://rogerdudler.github.io/git-guide/index.de.html\n", "- http://git-scm.com/book" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "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.12" }, "nbpresent": { "slides": { "03ebb3b4-e1e6-4708-8eee-245aefc26dba": { "id": "03ebb3b4-e1e6-4708-8eee-245aefc26dba", "prev": "9c582845-c981-4bf9-af66-8e177559c256", "regions": { "04c41d05-83ac-4a8f-9649-8f934aaf4d5c": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "d11b00e4-8aee-4906-be8b-7995b7f03b2a", "part": "whole" }, "id": "04c41d05-83ac-4a8f-9649-8f934aaf4d5c" }, "a408654b-6cf0-491f-94ed-e03528a44a4b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "c9e6061c-0aa6-49d0-af8e-fcc295c1d963", "part": "whole" }, "id": "a408654b-6cf0-491f-94ed-e03528a44a4b" } } }, "077fd736-0e50-418f-b5f6-d820db460db7": { "id": "077fd736-0e50-418f-b5f6-d820db460db7", "prev": "2116f4cf-d5ea-4d28-b917-915d639b3d95", "regions": { "ec67f29d-b6d2-4b7e-9bd4-e0e3bc204fa6": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "daebae9e-9706-4d13-8520-7f277a93970e", "part": "whole" }, "id": "ec67f29d-b6d2-4b7e-9bd4-e0e3bc204fa6" } } }, "0ac95c31-883d-459c-80b0-76d252be5e57": { "id": "0ac95c31-883d-459c-80b0-76d252be5e57", "prev": "7839ebf0-9f1e-4d99-af4c-ee3a59cd6651", "regions": { "4c7dab43-20b2-4258-a351-0b0e3e1f404d": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "b4629796-5f51-4e0c-88d0-59efa1bfe586", "part": "whole" }, "id": "4c7dab43-20b2-4258-a351-0b0e3e1f404d" } } }, "0b6830d8-73b8-469c-9dbc-f7ad0c672661": { "id": "0b6830d8-73b8-469c-9dbc-f7ad0c672661", "prev": "2b3f8a10-0bd7-4c07-961a-eb01960a842a", "regions": { "15cada42-bbf9-4730-87fb-9d8958dfeaea": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "6cd29b27-0812-46a1-958b-9a7a33c8e894", "part": "whole" }, "id": "15cada42-bbf9-4730-87fb-9d8958dfeaea" } } }, "1d72770b-6f2e-4550-89fc-bcb708463381": { "id": "1d72770b-6f2e-4550-89fc-bcb708463381", "prev": "7749a311-28a7-4b94-89a8-b387207158b4", "regions": { "47dc4a6a-71eb-4f13-8879-63291c174376": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "37b33e06-e577-4146-90c9-1839a6bef1c1", "part": "whole" }, "id": "47dc4a6a-71eb-4f13-8879-63291c174376" } } }, "1fb333bb-be38-42ef-b7b5-3b23e795121e": { "id": "1fb333bb-be38-42ef-b7b5-3b23e795121e", "prev": "bb64f478-7e83-4f0f-b401-aa51280b11eb", "regions": { "556f5aa1-2260-4be8-937e-27a029f7bfca": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "de3b5efa-9f5c-4925-b2d9-f6b0eff9e9a0", "part": "whole" }, "id": "556f5aa1-2260-4be8-937e-27a029f7bfca" } } }, "2045cc1b-3f73-4326-9593-5ee29207ce7a": { "id": "2045cc1b-3f73-4326-9593-5ee29207ce7a", "prev": "cb9e594b-0bf1-432b-a9f4-4436c5df26b3", "regions": { "34b7ddc1-fb89-4602-95e1-6e6e767754fb": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "4a4ed1bc-6aa0-45cd-910b-845e7398107c", "part": "whole" }, "id": "34b7ddc1-fb89-4602-95e1-6e6e767754fb" } } }, "2116f4cf-d5ea-4d28-b917-915d639b3d95": { "id": "2116f4cf-d5ea-4d28-b917-915d639b3d95", "prev": "f88fd3d3-768d-4b77-8433-5b87fd5e4b77", "regions": { "03403cc2-5eb9-4a48-b2b2-9d664e39a698": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "ab2c05e7-9935-46d4-b399-a78f43b6076b", "part": "whole" }, "id": "03403cc2-5eb9-4a48-b2b2-9d664e39a698" } } }, "2b3f8a10-0bd7-4c07-961a-eb01960a842a": { "id": "2b3f8a10-0bd7-4c07-961a-eb01960a842a", "prev": "f7d1383e-f2ae-44e7-91d1-c9942b27ec03", "regions": { "f3c83528-b523-4fa0-9a3d-0817e0ca65c3": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "1dfa1937-8105-4c11-9ec1-d1bbf9531822", "part": "whole" }, "id": "f3c83528-b523-4fa0-9a3d-0817e0ca65c3" } } }, "300b61e0-f287-459e-a16c-52db9b201d16": { "id": "300b61e0-f287-459e-a16c-52db9b201d16", "prev": "369e80a2-4255-4510-8064-44317e52ab18", "regions": { "2209cf76-2e65-4d36-a881-cd6073a0d293": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "0019dbe6-0c8c-4983-92a8-4d986d3811f9", "part": "whole" }, "id": "2209cf76-2e65-4d36-a881-cd6073a0d293" }, "6c8606f5-d9f4-41ec-830b-d72e1185f083": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "53123ca1-0144-48bf-bc73-d920e8db178c", "part": "whole" }, "id": "6c8606f5-d9f4-41ec-830b-d72e1185f083" } } }, "3510d15b-d731-4b2a-b8e3-5a8f68114999": { "id": "3510d15b-d731-4b2a-b8e3-5a8f68114999", "prev": "629b8f45-ac39-42e9-b976-3555a4e12f3b", "regions": { "3359a33b-018f-4ca0-9d14-e7cf7f22bba1": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "7d399080-2ab9-4434-9478-7952820c09ff", "part": "whole" }, "id": "3359a33b-018f-4ca0-9d14-e7cf7f22bba1" } } }, "369e80a2-4255-4510-8064-44317e52ab18": { "id": "369e80a2-4255-4510-8064-44317e52ab18", "prev": "7ed7c319-7b44-4019-ab68-0b34289c5f2f", "regions": { "1d59fc5e-2721-4208-bab5-5c759ea3f002": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "85d3adf4-e3a1-4613-a4bb-9109932ed308", "part": "whole" }, "id": "1d59fc5e-2721-4208-bab5-5c759ea3f002" }, "285cae5a-ba4f-4bea-a89e-8eb1a5ca4031": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "6d52debd-47eb-458a-95cf-bc469270a19b", "part": "whole" }, "id": "285cae5a-ba4f-4bea-a89e-8eb1a5ca4031" }, "492a8cab-2f92-498d-a661-ee848726e98f": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "ecb79b65-68ae-4df6-b38e-ebef2e73ede3", "part": "whole" }, "id": "492a8cab-2f92-498d-a661-ee848726e98f" }, "68a21fdf-cde5-40e7-a349-5912ff70271d": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "a34e2f76-7e51-4161-a489-f8167c4c51d7", "part": "whole" }, "id": "68a21fdf-cde5-40e7-a349-5912ff70271d" }, "d6b5adda-b4bf-4e2b-9d43-87cf819f5636": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "847eeb0e-b03b-48c8-8150-ff18c0b42c76", "part": "whole" }, "id": "d6b5adda-b4bf-4e2b-9d43-87cf819f5636" } } }, "398c86f4-bd62-4d22-b4be-46231ab6502d": { "id": "398c86f4-bd62-4d22-b4be-46231ab6502d", "prev": "95667a3c-1075-4a7d-8664-feb31a595530", "regions": { "d4781add-09f5-467d-8dd4-7af4b4839cb8": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "c64bfb29-d2aa-4455-b146-f900cb5f69e9", "part": "whole" }, "id": "d4781add-09f5-467d-8dd4-7af4b4839cb8" } } }, "3a29504c-fc18-495f-b78e-4d84f0dba7a2": { "id": "3a29504c-fc18-495f-b78e-4d84f0dba7a2", "prev": "f76aa05e-cad2-4379-9b70-910133438ed5", "regions": { "070b1cba-42f2-4e77-be67-93eaa4edf399": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "2e0d695f-a58b-4bad-a5bf-979a8897e9a4", "part": "whole" }, "id": "070b1cba-42f2-4e77-be67-93eaa4edf399" } } }, "3c24eeb5-eff5-4981-8b05-b2e7c3715043": { "id": "3c24eeb5-eff5-4981-8b05-b2e7c3715043", "prev": "7861495f-4a8d-4914-a953-7e58b734a80d", "regions": { "d4bad429-5b99-4cc9-bdc5-691b1e58814b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "70831706-350e-4a2e-b416-45489cf6030e", "part": "whole" }, "id": "d4bad429-5b99-4cc9-bdc5-691b1e58814b" } } }, "4021b2a6-5e6b-4c02-aad6-854d2a9f2e65": { "id": "4021b2a6-5e6b-4c02-aad6-854d2a9f2e65", "prev": "de3417aa-cdf6-477c-9896-5ffb668cea12", "regions": { "5643e3df-7942-490e-a848-93cb0f2b89f4": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "e3c3046e-67d5-482f-b19a-5435d0cb4896", "part": "whole" }, "id": "5643e3df-7942-490e-a848-93cb0f2b89f4" }, "a697254d-6bb4-436c-8367-dc3a6f2b1cbb": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "8a619477-ff9a-42bc-86fc-b311bea7d0eb", "part": "whole" }, "id": "a697254d-6bb4-436c-8367-dc3a6f2b1cbb" } } }, "4876e32c-a9eb-452f-860f-fa2b3b4742ab": { "id": "4876e32c-a9eb-452f-860f-fa2b3b4742ab", "prev": "e2603728-67a3-4ce8-a35f-895a0ff66f59", "regions": { "39dbea12-89d8-4cfd-bd57-4e16de93e28f": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "c4c8b755-55d9-4a29-96c3-c1a0753a79ff", "part": "whole" }, "id": "39dbea12-89d8-4cfd-bd57-4e16de93e28f" } } }, "4f74fd53-014d-4390-8c07-0197c9ce8607": { "id": "4f74fd53-014d-4390-8c07-0197c9ce8607", "prev": "f94acc94-704c-4873-acfb-c37dc82552f3", "regions": { "06166e27-4506-467b-9533-8b0917cd42a4": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "3aa19415-9834-48f2-94e6-708b759589bb", "part": "whole" }, "id": "06166e27-4506-467b-9533-8b0917cd42a4" }, "b1c0a21b-2d0b-4763-8869-cbac63536764": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "76110d90-aa96-44b7-99f6-ee89749a4894", "part": "whole" }, "id": "b1c0a21b-2d0b-4763-8869-cbac63536764" }, "e15ad91e-fddf-4619-8892-31577dc8b46e": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "69329572-5b2e-4b4c-b2f5-2e2031cd1cd8", "part": "whole" }, "id": "e15ad91e-fddf-4619-8892-31577dc8b46e" } } }, "5a596a5c-28d6-4d36-ae97-83e55256a3ec": { "id": "5a596a5c-28d6-4d36-ae97-83e55256a3ec", "prev": "f64a96d8-1adc-409b-af70-5fb3c68b8690", "regions": { "ad4d1824-d7da-4eb8-b31c-92f73a7fe6dc": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "7523fc0d-25d8-4e92-8005-8039d1eb4698", "part": "whole" }, "id": "ad4d1824-d7da-4eb8-b31c-92f73a7fe6dc" } } }, "5ac5e654-5ce9-4d8d-84e0-1657878c4680": { "id": "5ac5e654-5ce9-4d8d-84e0-1657878c4680", "prev": "78b61a94-1d34-4caa-b791-83f0fd92176c", "regions": { "09906f50-c11b-4047-8004-452742f1392b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "81f0a76d-02a7-4783-8db5-d0af4661de14", "part": "whole" }, "id": "09906f50-c11b-4047-8004-452742f1392b" } } }, "5fead47e-6bdb-47e3-912d-a0f47755afda": { "id": "5fead47e-6bdb-47e3-912d-a0f47755afda", "prev": "69791ab4-228f-49c6-86da-ad775728cb25", "regions": { "2b382d0b-9df4-4a6e-9670-b77c85aaf0c6": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "e64ae765-aed7-4f26-9085-1c2976a585c3", "part": "whole" }, "id": "2b382d0b-9df4-4a6e-9670-b77c85aaf0c6" }, "8e96e419-eb36-4625-938e-df60bb72a48c": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "b72279db-ddd7-4063-acec-553613169d33", "part": "whole" }, "id": "8e96e419-eb36-4625-938e-df60bb72a48c" }, "9eb63ea9-0805-439e-8866-6dea66fa856c": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "0f87d8ac-9989-4171-9893-57f8d04c8fe7", "part": "whole" }, "id": "9eb63ea9-0805-439e-8866-6dea66fa856c" } } }, "629b8f45-ac39-42e9-b976-3555a4e12f3b": { "id": "629b8f45-ac39-42e9-b976-3555a4e12f3b", "prev": "e2c175da-8a62-4c8c-a342-81ca3c58100e", "regions": { "40a1f90a-a1c7-45da-a80e-f15ea03d4e49": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "ab5e5745-f025-4b2a-bef6-d1040bcf0e6f", "part": "whole" }, "id": "40a1f90a-a1c7-45da-a80e-f15ea03d4e49" }, "4719ca65-e25a-43f7-8847-87d2fcb7dcba": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "6e236b23-dfe4-46dc-8a94-cb50a0274011", "part": "whole" }, "id": "4719ca65-e25a-43f7-8847-87d2fcb7dcba" } } }, "6474238d-ba05-4ec9-8978-c3958bd4c79a": { "id": "6474238d-ba05-4ec9-8978-c3958bd4c79a", "prev": null, "regions": { "e9daa1d0-21e7-478d-a1b9-18d3dbadd105": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "d12895fc-e9d2-4450-82ad-4c1a0f0377f6", "part": "whole" }, "id": "e9daa1d0-21e7-478d-a1b9-18d3dbadd105" } } }, "69791ab4-228f-49c6-86da-ad775728cb25": { "id": "69791ab4-228f-49c6-86da-ad775728cb25", "prev": "862740f5-1a96-47f6-ae07-6a1e5e683d10", "regions": { "966dca91-a926-430a-b1b4-d317d4dd1406": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "4f8f38d7-5ee2-4f4d-975f-d0df0a8c8ad8", "part": "whole" }, "id": "966dca91-a926-430a-b1b4-d317d4dd1406" } } }, "73634a50-77b1-41b6-ac65-ea62a9f5de3f": { "id": "73634a50-77b1-41b6-ac65-ea62a9f5de3f", "prev": "ca03438d-a32f-42d4-bb49-eedf1d430821", "regions": { "9d9dc07d-1929-4dd0-bca6-0c73b7e5db1d": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "2b40388f-e218-4fee-b482-cc2949aca3ba", "part": "whole" }, "id": "9d9dc07d-1929-4dd0-bca6-0c73b7e5db1d" } } }, "7749a311-28a7-4b94-89a8-b387207158b4": { "id": "7749a311-28a7-4b94-89a8-b387207158b4", "prev": "c15ab019-f87c-4770-9ef0-fb50e4c2a2f1", "regions": { "d2bfeec5-0077-4887-bc76-057bad9f86a7": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "bdf5aa9d-0ad0-4d7e-8ec9-69767aac949d", "part": "whole" }, "id": "d2bfeec5-0077-4887-bc76-057bad9f86a7" } } }, "7839ebf0-9f1e-4d99-af4c-ee3a59cd6651": { "id": "7839ebf0-9f1e-4d99-af4c-ee3a59cd6651", "prev": "d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6", "regions": { "14868a3a-54ba-4c6c-b0a4-bd6dfa427af2": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "e47a821a-60b4-4faf-abac-5de9f3e6f2d6", "part": "whole" }, "id": "14868a3a-54ba-4c6c-b0a4-bd6dfa427af2" } } }, "7861495f-4a8d-4914-a953-7e58b734a80d": { "id": "7861495f-4a8d-4914-a953-7e58b734a80d", "prev": "077fd736-0e50-418f-b5f6-d820db460db7", "regions": { "9e90b0c2-0adf-48fd-a6e7-ea2b1bc45631": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "268c7b9d-5460-4bb1-aa89-3d043386225f", "part": "whole" }, "id": "9e90b0c2-0adf-48fd-a6e7-ea2b1bc45631" } } }, "788c3324-a561-45be-a16c-ea59cf3bd544": { "id": "788c3324-a561-45be-a16c-ea59cf3bd544", "prev": "fdf3e56f-b08d-4ab6-b497-91ba154795b2", "regions": { "349dd23c-0155-4457-b0ee-29ee42055b76": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "bde71215-d5bd-47d5-9689-6af0c59e52f8", "part": "whole" }, "id": "349dd23c-0155-4457-b0ee-29ee42055b76" }, "60150f68-46ba-495c-a5da-608fc88516ca": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "8e5f372f-f4cd-4411-9cbe-a23cdf7ed1d6", "part": "whole" }, "id": "60150f68-46ba-495c-a5da-608fc88516ca" } } }, "78b61a94-1d34-4caa-b791-83f0fd92176c": { "id": "78b61a94-1d34-4caa-b791-83f0fd92176c", "prev": "3a29504c-fc18-495f-b78e-4d84f0dba7a2", "regions": { "a151584e-9863-43d9-a04d-d71da2b3fa5d": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "ac2fd93e-9513-4869-9b15-f692772ee7e0", "part": "whole" }, "id": "a151584e-9863-43d9-a04d-d71da2b3fa5d" } } }, "7ceb0a9c-e715-4f16-bc73-9a91eebc175a": { "id": "7ceb0a9c-e715-4f16-bc73-9a91eebc175a", "prev": "9c62c9e9-d60b-48ca-9cd9-8840595112b5", "regions": { "92b4c853-599b-468f-8248-08710c2dd072": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "8efc1a03-80cb-4800-8112-68f6c732e66b", "part": "whole" }, "id": "92b4c853-599b-468f-8248-08710c2dd072" } } }, "7ed7c319-7b44-4019-ab68-0b34289c5f2f": { "id": "7ed7c319-7b44-4019-ab68-0b34289c5f2f", "prev": "b932ea1a-04a0-4c41-ad3b-5495b4954764", "regions": { "50312772-43ce-4569-bf69-7a31250fdfb2": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "5181c555-6086-4880-b29a-2348f6511da9", "part": "whole" }, "id": "50312772-43ce-4569-bf69-7a31250fdfb2" }, "518ddfe8-b8ae-495e-b8a9-f88b7898485e": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "b76d6d0a-8c53-494f-971d-2ee4b070b073", "part": "whole" }, "id": "518ddfe8-b8ae-495e-b8a9-f88b7898485e" }, "87361b65-5e1e-4be9-a1d9-4b171cafc3a8": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "f891d975-d161-44ae-9ca7-8d3ccf5fc215", "part": "whole" }, "id": "87361b65-5e1e-4be9-a1d9-4b171cafc3a8" } } }, "862740f5-1a96-47f6-ae07-6a1e5e683d10": { "id": "862740f5-1a96-47f6-ae07-6a1e5e683d10", "prev": "4f74fd53-014d-4390-8c07-0197c9ce8607", "regions": { "42306faa-8f0c-485c-960d-df7eb77c09c9": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "74273d87-a08a-4770-af40-ae9c1891cc3a", "part": "whole" }, "id": "42306faa-8f0c-485c-960d-df7eb77c09c9" } } }, "93a84b09-fc75-4f02-a9b0-547c0116833c": { "id": "93a84b09-fc75-4f02-a9b0-547c0116833c", "prev": "e6822679-b40f-4683-a0e2-8bc07f52804f", "regions": { "25bc8005-ca63-4275-9e48-03ffbe67b53e": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "1c548566-da61-4c09-9d3a-ca9dbe91af3c", "part": "whole" }, "id": "25bc8005-ca63-4275-9e48-03ffbe67b53e" }, "517ad731-de65-4b9f-a0d1-6481c6535f7b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "03fd621d-0671-4e62-b746-0664c73c489f", "part": "whole" }, "id": "517ad731-de65-4b9f-a0d1-6481c6535f7b" } } }, "95667a3c-1075-4a7d-8664-feb31a595530": { "id": "95667a3c-1075-4a7d-8664-feb31a595530", "prev": "9ed90208-a569-4e7b-b03b-6c7adc1f53dd", "regions": { "1937290f-5a31-43d2-b0fc-f6303c48a027": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "526af6d0-b18a-4607-b982-d6dde7b7e2c6", "part": "whole" }, "id": "1937290f-5a31-43d2-b0fc-f6303c48a027" } } }, "96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71": { "id": "96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71", "prev": "6474238d-ba05-4ec9-8978-c3958bd4c79a", "regions": { "9ef73a38-93bd-4406-b00e-0eb4cb4eeed2": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "dfd8bc63-c0b1-4a97-818e-8d2eabe4091d", "part": "whole" }, "id": "9ef73a38-93bd-4406-b00e-0eb4cb4eeed2" } } }, "9a3c6784-6eff-47f4-b1bd-0c1dd948edef": { "id": "9a3c6784-6eff-47f4-b1bd-0c1dd948edef", "prev": "aeec7108-724a-4eaa-bd2c-842e4364d647", "regions": { "6c626678-2a95-49d5-9190-c218c9bc5c20": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "c2612fa3-97f6-4597-a2ea-dc6f6ccd903a", "part": "whole" }, "id": "6c626678-2a95-49d5-9190-c218c9bc5c20" }, "755a63e2-6bb4-4674-809f-de2355ef3e03": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "c07daf28-8f7e-451d-a285-cce3cd5df359", "part": "whole" }, "id": "755a63e2-6bb4-4674-809f-de2355ef3e03" } } }, "9c582845-c981-4bf9-af66-8e177559c256": { "id": "9c582845-c981-4bf9-af66-8e177559c256", "prev": "1d72770b-6f2e-4550-89fc-bcb708463381", "regions": { "1192928c-1a18-4614-a415-2f0d2fdec9d0": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "fba0ab5c-2c39-41bd-abb1-afae340e885a", "part": "whole" }, "id": "1192928c-1a18-4614-a415-2f0d2fdec9d0" } } }, "9c62c9e9-d60b-48ca-9cd9-8840595112b5": { "id": "9c62c9e9-d60b-48ca-9cd9-8840595112b5", "prev": "0b6830d8-73b8-469c-9dbc-f7ad0c672661", "regions": { "316f68ff-be76-4a41-9966-e736711f3063": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "b25229ca-6cd7-4ba8-99bd-445472cb10a0", "part": "whole" }, "id": "316f68ff-be76-4a41-9966-e736711f3063" }, "56181e3d-6bd8-4044-aa07-41e2f5f97aeb": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "cc003ad3-5ca2-4e18-89e5-7d4b16930a50", "part": "whole" }, "id": "56181e3d-6bd8-4044-aa07-41e2f5f97aeb" } } }, "9d6c931a-e296-4af0-970e-790e37684f7c": { "id": "9d6c931a-e296-4af0-970e-790e37684f7c", "prev": "398c86f4-bd62-4d22-b4be-46231ab6502d", "regions": { "47c5c1f3-33f0-4729-9ece-332d1b7a2909": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "a87ce2b1-6cc7-4d83-9537-32a1e88dbf3f", "part": "whole" }, "id": "47c5c1f3-33f0-4729-9ece-332d1b7a2909" } } }, "9ed90208-a569-4e7b-b03b-6c7adc1f53dd": { "id": "9ed90208-a569-4e7b-b03b-6c7adc1f53dd", "prev": "4021b2a6-5e6b-4c02-aad6-854d2a9f2e65", "regions": { "69587752-15da-45dc-907f-dfb2c49adb2b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "983f1a79-bdad-4eaf-8445-0ef5e13ff78a", "part": "whole" }, "id": "69587752-15da-45dc-907f-dfb2c49adb2b" }, "a6eeccd5-4bbf-4fbe-bafa-5ab2ff06d512": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "3c03d53b-9ce5-4a41-8f1c-f8eb28c0913c", "part": "whole" }, "id": "a6eeccd5-4bbf-4fbe-bafa-5ab2ff06d512" } } }, "a23e77a5-7739-4ce2-b2ea-5896797fc4b0": { "id": "a23e77a5-7739-4ce2-b2ea-5896797fc4b0", "prev": "1fb333bb-be38-42ef-b7b5-3b23e795121e", "regions": { "44cbbb4a-ede6-4ce3-a25b-e5aaead63294": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "def05353-a723-4b7c-a807-a935ac5400a4", "part": "whole" }, "id": "44cbbb4a-ede6-4ce3-a25b-e5aaead63294" } } }, "a2a07b88-8c2b-4873-94f3-c5faa594ac59": { "id": "a2a07b88-8c2b-4873-94f3-c5faa594ac59", "prev": "03ebb3b4-e1e6-4708-8eee-245aefc26dba", "regions": { "a4fa52ed-e4ae-41dc-bf6f-f22545dc8e46": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "e383974d-d48e-4d9d-b441-895be38c6a43", "part": "whole" }, "id": "a4fa52ed-e4ae-41dc-bf6f-f22545dc8e46" } } }, "aa9fa66a-5ad5-485c-9b96-252daab5fff1": { "id": "aa9fa66a-5ad5-485c-9b96-252daab5fff1", "prev": "788c3324-a561-45be-a16c-ea59cf3bd544", "regions": { "67fff11c-e963-4cfd-94b8-ff0d88fb8f29": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "27aa26a3-6e82-4155-8822-41eecfc329c1", "part": "whole" }, "id": "67fff11c-e963-4cfd-94b8-ff0d88fb8f29" } } }, "ad960fc5-8528-444f-8756-2408222d0b7e": { "id": "ad960fc5-8528-444f-8756-2408222d0b7e", "prev": "96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71", "regions": { "0104ec1c-17d6-4c01-876b-9573d5dbf4f0": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "d87ede56-acd8-4ab4-9b2a-267dfae83a16", "part": "whole" }, "id": "0104ec1c-17d6-4c01-876b-9573d5dbf4f0" } } }, "aeec7108-724a-4eaa-bd2c-842e4364d647": { "id": "aeec7108-724a-4eaa-bd2c-842e4364d647", "prev": "7ceb0a9c-e715-4f16-bc73-9a91eebc175a", "regions": { "8f03b4bc-24dc-46fb-a398-36decafce0a7": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "d84af875-86aa-403a-a562-92d45711c40d", "part": "whole" }, "id": "8f03b4bc-24dc-46fb-a398-36decafce0a7" }, "8f0f6a85-91cb-47d0-baef-4e38f72433f4": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "244bed87-f877-4c34-9286-1aa4656c0549", "part": "whole" }, "id": "8f0f6a85-91cb-47d0-baef-4e38f72433f4" } } }, "b932ea1a-04a0-4c41-ad3b-5495b4954764": { "id": "b932ea1a-04a0-4c41-ad3b-5495b4954764", "prev": "93a84b09-fc75-4f02-a9b0-547c0116833c", "regions": { "c95bad37-54ce-42fc-ac84-62b784e799a4": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "e02bee8b-74ee-4ec6-9e4d-56a8c4d62a18", "part": "whole" }, "id": "c95bad37-54ce-42fc-ac84-62b784e799a4" }, "e8586a4f-bef8-486a-a861-bbc57a475c44": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "c8060d59-1226-4d88-9f5d-8a47f7a93fb2", "part": "whole" }, "id": "e8586a4f-bef8-486a-a861-bbc57a475c44" }, "f7eeb65f-f340-4cb7-9986-31172b261a49": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "5e78f362-629b-4a23-9fc8-031ccd7bb8d2", "part": "whole" }, "id": "f7eeb65f-f340-4cb7-9986-31172b261a49" } } }, "bb64f478-7e83-4f0f-b401-aa51280b11eb": { "id": "bb64f478-7e83-4f0f-b401-aa51280b11eb", "prev": "5a596a5c-28d6-4d36-ae97-83e55256a3ec", "regions": { "20c865cf-6e7e-4c6a-a059-a28b39957028": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "be8aae5f-3676-468d-a7ac-565aeb7a874d", "part": "whole" }, "id": "20c865cf-6e7e-4c6a-a059-a28b39957028" } } }, "c15ab019-f87c-4770-9ef0-fb50e4c2a2f1": { "id": "c15ab019-f87c-4770-9ef0-fb50e4c2a2f1", "prev": "9d6c931a-e296-4af0-970e-790e37684f7c", "regions": { "22f3d001-9c9e-4c30-a99a-1f31aab69c06": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "39a3bf91-b780-41f0-9bc7-08b8e084013f", "part": "whole" }, "id": "22f3d001-9c9e-4c30-a99a-1f31aab69c06" } } }, "ca03438d-a32f-42d4-bb49-eedf1d430821": { "id": "ca03438d-a32f-42d4-bb49-eedf1d430821", "prev": "3510d15b-d731-4b2a-b8e3-5a8f68114999", "regions": { "4afd0575-268a-4bd3-bbb9-e4feae96b53a": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "872b44cc-4d3b-4059-9bdf-762d5d397dd9", "part": "whole" }, "id": "4afd0575-268a-4bd3-bbb9-e4feae96b53a" } } }, "cb9e594b-0bf1-432b-a9f4-4436c5df26b3": { "id": "cb9e594b-0bf1-432b-a9f4-4436c5df26b3", "prev": "a23e77a5-7739-4ce2-b2ea-5896797fc4b0", "regions": { "90ccaffb-9af1-4262-92a7-fc733ee04f3f": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "446575e7-d6bb-48c3-8194-d07f94fbac4e", "part": "whole" }, "id": "90ccaffb-9af1-4262-92a7-fc733ee04f3f" } } }, "d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6": { "id": "d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6", "prev": "ad960fc5-8528-444f-8756-2408222d0b7e", "regions": { "ac399d7f-0cfa-4671-abb2-10749a12bbea": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "06799276-d239-4c70-95c9-0cd459fbc0c9", "part": "whole" }, "id": "ac399d7f-0cfa-4671-abb2-10749a12bbea" } } }, "de3417aa-cdf6-477c-9896-5ffb668cea12": { "id": "de3417aa-cdf6-477c-9896-5ffb668cea12", "prev": "aa9fa66a-5ad5-485c-9b96-252daab5fff1", "regions": { "01ad388b-064d-412c-9664-590a493b9a58": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "fac61ad2-464a-40ec-b1aa-bb0ab03746a6", "part": "whole" }, "id": "01ad388b-064d-412c-9664-590a493b9a58" }, "2406d17c-0446-455e-80db-862947fd4823": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "bf21c6b2-3e3e-4362-8060-e0ed293b2500", "part": "whole" }, "id": "2406d17c-0446-455e-80db-862947fd4823" }, "f99c46c5-9782-498c-8782-94d40e141def": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "6a3f6b1a-2dae-449f-befc-cabd265c058a", "part": "whole" }, "id": "f99c46c5-9782-498c-8782-94d40e141def" } } }, "e2603728-67a3-4ce8-a35f-895a0ff66f59": { "id": "e2603728-67a3-4ce8-a35f-895a0ff66f59", "prev": "2045cc1b-3f73-4326-9593-5ee29207ce7a", "regions": { "41783b82-ca1e-448e-89d3-1a212b8719bf": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "bb8570b4-33c5-480e-a492-35bb3b3322d3", "part": "whole" }, "id": "41783b82-ca1e-448e-89d3-1a212b8719bf" } } }, "e2c175da-8a62-4c8c-a342-81ca3c58100e": { "id": "e2c175da-8a62-4c8c-a342-81ca3c58100e", "prev": "9a3c6784-6eff-47f4-b1bd-0c1dd948edef", "regions": { "65b67ff8-2726-475d-9847-8e844723dfe4": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "6b11abb0-e7d4-4be0-953e-d01a5e535d71", "part": "whole" }, "id": "65b67ff8-2726-475d-9847-8e844723dfe4" }, "a4687f26-7043-4ca3-a275-58ec78f2cf9b": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "4b631bd6-3ff3-472f-a268-d47ae1111a76", "part": "whole" }, "id": "a4687f26-7043-4ca3-a275-58ec78f2cf9b" } } }, "e6822679-b40f-4683-a0e2-8bc07f52804f": { "id": "e6822679-b40f-4683-a0e2-8bc07f52804f", "prev": "73634a50-77b1-41b6-ac65-ea62a9f5de3f", "regions": { "614bd451-e0e8-437c-987f-2b88fd9de1ef": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "23087ad7-b2a5-4354-9c0e-c022d134c02c", "part": "whole" }, "id": "614bd451-e0e8-437c-987f-2b88fd9de1ef" }, "76f2f8de-b7bd-4ef8-92c1-8d9155c18b9b": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "6455ea4a-3d80-4179-a398-1532471f149f", "part": "whole" }, "id": "76f2f8de-b7bd-4ef8-92c1-8d9155c18b9b" }, "936b1b70-e0df-4cfc-9a9d-13f4b2ba6688": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "0e3879d4-32f1-4d20-9d1f-db03facfd36f", "part": "whole" }, "id": "936b1b70-e0df-4cfc-9a9d-13f4b2ba6688" } } }, "ed43497b-8435-4910-89d6-a8f166a26e44": { "id": "ed43497b-8435-4910-89d6-a8f166a26e44", "prev": "300b61e0-f287-459e-a16c-52db9b201d16", "regions": { "5afe53e4-32be-43b2-9af0-1c8bf3daf718": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "5eae6e1d-78f3-4f72-b3eb-0d3f5c98d217", "part": "whole" }, "id": "5afe53e4-32be-43b2-9af0-1c8bf3daf718" }, "8aaeb9ab-9253-4bca-ab95-d9df055c0b28": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "67494a06-e358-4639-9d84-752d72f60064", "part": "whole" }, "id": "8aaeb9ab-9253-4bca-ab95-d9df055c0b28" }, "cec8066b-77ee-4252-ae96-4c8335e36a40": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "30af7edc-f671-4a0d-9337-eda616ea1d79", "part": "whole" }, "id": "cec8066b-77ee-4252-ae96-4c8335e36a40" } } }, "f64a96d8-1adc-409b-af70-5fb3c68b8690": { "id": "f64a96d8-1adc-409b-af70-5fb3c68b8690", "prev": "3c24eeb5-eff5-4981-8b05-b2e7c3715043", "regions": { "95a11c5e-e10a-43c4-ac24-eb5cceb0a0e0": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "769bf03e-6c93-4411-a629-4d3339c16a5c", "part": "whole" }, "id": "95a11c5e-e10a-43c4-ac24-eb5cceb0a0e0" } } }, "f76aa05e-cad2-4379-9b70-910133438ed5": { "id": "f76aa05e-cad2-4379-9b70-910133438ed5", "prev": "4876e32c-a9eb-452f-860f-fa2b3b4742ab", "regions": { "21570da8-703a-4680-a6f0-b7bed77725c6": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "64559dbf-1496-442b-98df-fcdceb933eb6", "part": "whole" }, "id": "21570da8-703a-4680-a6f0-b7bed77725c6" } } }, "f7d1383e-f2ae-44e7-91d1-c9942b27ec03": { "id": "f7d1383e-f2ae-44e7-91d1-c9942b27ec03", "prev": "0ac95c31-883d-459c-80b0-76d252be5e57", "regions": { "68074f65-c661-44d0-bc78-cce19c2603eb": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "752c0a36-27a4-434b-b965-4c463531cde1", "part": "whole" }, "id": "68074f65-c661-44d0-bc78-cce19c2603eb" } } }, "f88fd3d3-768d-4b77-8433-5b87fd5e4b77": { "id": "f88fd3d3-768d-4b77-8433-5b87fd5e4b77", "prev": "a2a07b88-8c2b-4873-94f3-c5faa594ac59", "regions": { "6c75ddfa-a551-4bf6-84d3-798b4e36a7b8": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "b8d190cd-dbf1-4172-93eb-8c818a42fe08", "part": "whole" }, "id": "6c75ddfa-a551-4bf6-84d3-798b4e36a7b8" } } }, "f94acc94-704c-4873-acfb-c37dc82552f3": { "id": "f94acc94-704c-4873-acfb-c37dc82552f3", "prev": "ed43497b-8435-4910-89d6-a8f166a26e44", "regions": { "50ffa5f8-1a45-471c-af9a-19379f761263": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "975c87bf-95ec-4ffd-b18f-78550a6af2f6", "part": "whole" }, "id": "50ffa5f8-1a45-471c-af9a-19379f761263" }, "5d08d230-02e3-4c07-b0a1-158a3492753c": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "ff557636-596c-4320-883e-d2748ba037ee", "part": "whole" }, "id": "5d08d230-02e3-4c07-b0a1-158a3492753c" } } }, "fdf3e56f-b08d-4ab6-b497-91ba154795b2": { "id": "fdf3e56f-b08d-4ab6-b497-91ba154795b2", "prev": "5fead47e-6bdb-47e3-912d-a0f47755afda", "regions": { "17269bf2-4ac1-49db-958f-52dd32ba1a80": { "attrs": { "height": 0.8, "width": 0.8, "x": 0.1, "y": 0.1 }, "content": { "cell": "cfa92050-a4d2-431a-8083-b1cf835ae4a5", "part": "whole" }, "id": "17269bf2-4ac1-49db-958f-52dd32ba1a80" }, "347da67b-58e9-4f19-914c-9213434d080f": { "attrs": { "height": 0.4, "width": 0.8, "x": 0.1, "y": 0.5 }, "content": { "cell": "bb0f357a-101d-4ed7-a3ab-68ecac1b2084", "part": "whole" }, "id": "347da67b-58e9-4f19-914c-9213434d080f" } } } }, "themes": {} } }, "nbformat": 4, "nbformat_minor": 0 }