diff --git a/Losningsforslag/Oving4/Arbeidsdager - lf.ipynb b/Losningsforslag/Oving4/Arbeidsdager - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..c30a642f804b9bb4a69f0490094a2f0d44fe7f6c
--- /dev/null
+++ b/Losningsforslag/Oving4/Arbeidsdager - lf.ipynb	
@@ -0,0 +1,107 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def is_leap_year(year):\n",
+    "    if year % 400 == 0:\n",
+    "        return True\n",
+    "    elif year % 100 == 0:\n",
+    "        return False\n",
+    "    elif year % 4 == 0:\n",
+    "        return True\n",
+    "    return False\n",
+    "  \n",
+    "def weekday_newyear(year):\n",
+    "    weekday = 0 # Mandag\n",
+    "    for i in range(1900, year):\n",
+    "        days_in_year = is_leap_year(i) and 366 or 365\n",
+    "        weekday = (weekday + days_in_year) % 7\n",
+    "    return weekday\n",
+    " \n",
+    "ukedager = [\" man\", \"tir\", \"ons\", \"tor\", \"fre\", \"lør\", \"søn \"]\n",
+    " \n",
+    "for i in range(1900 ,1920):\n",
+    "    print(i, ukedager[weekday_newyear(i)])\n",
+    "     \n",
+    "    #Kodesnutten under er en annen måte å løse utskriftsoppgaven på\n",
+    "    #print(i, [\" man\", \"tir\", \"ons\", \"tor\", \"fre\", \"lør\", \"søn \"][weekday_newyear(i)])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def is_workday ( weekday ):\n",
+    "    return 0 <= weekday < 5"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def workdays_in_year ( year ):\n",
+    "    weekday = weekday_newyear ( year )\n",
+    "    days_in_year = is_leap_year ( year ) and 366 or 365\n",
+    "    workdays = 0\n",
+    "    for i in range ( days_in_year ):\n",
+    "        if is_workday ( weekday ):\n",
+    "            workdays += 1\n",
+    "        weekday = ( weekday + 1) % 7\n",
+    "    return workdays\n",
+    "     \n",
+    "for i in range (1900 , 1920 ):\n",
+    "    print (i, \" har\", workdays_in_year (i), \" arbeidsdager \")"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Den store sporreundersokelsen - lf.ipynb b/Losningsforslag/Oving4/Den store sporreundersokelsen - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..ee3b0d72122bfc684db7631f3a2513ccdce9818e
--- /dev/null
+++ b/Losningsforslag/Oving4/Den store sporreundersokelsen - lf.ipynb	
@@ -0,0 +1,156 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sys import exit\n",
+    "import numpy as np\n",
+    "\n",
+    "resultater = np.zeros(6)\n",
+    "\n",
+    "def les_statistikk():\n",
+    "    return np.loadtxt('Resultater.txt')\n",
+    "\n",
+    "def lagre_statistikk():\n",
+    "    tidligere_resultater = les_statistikk()\n",
+    "\n",
+    "    nye_resultater = resultater.copy()\n",
+    "    nye_resultater += tidligere_resultater\n",
+    "    \n",
+    "    np.savetxt('Resultater.txt', nye_resultater)\n",
+    "    return nye_resultater\n",
+    "    \n",
+    "\n",
+    "def lagre_og_skriv_statistikk():\n",
+    "    \n",
+    "    arr = lagre_statistikk()\n",
+    "    \n",
+    "    print('\\nResultat av undersøkelse!')\n",
+    "    print(f'Antall nye kvinner: {resultater[0]}. Totalt antall kvinner: {arr[0]}')\n",
+    "    print(f'Antall nye menn: {resultater[1]}. Totalt antall menn: {arr[1]}')\n",
+    "    print(f'Antall nye ikke-binære: {resultater[2]}. Totalt antall ikke-binære: {arr[2]}')\n",
+    "    print(f'Antall nye personer som tar fag: {resultater[3]}. Totalt antall personer som tar fag: {arr[3]}')\n",
+    "    print(f'Antall nye personer som tar ITGK: {resultater[4]}. Totalt antall personer som tar ITGK: {arr[4]}')\n",
+    "\n",
+    "    if resultater[3]:\n",
+    "        print (f'Antall timer i snitt brukt på lekser denne undersøkelsen: {resultater[5] / (resultater[3])}')\n",
+    "    if arr[3]:\n",
+    "        print(f'Antall timer i snitt brukt på lekser totalt: {arr[5] / arr[3]}')\n",
+    "\n",
+    "def sjekk_svar (spm):\n",
+    "    svar = input (spm ).strip().lower()\n",
+    "    if svar == \"hade\":\n",
+    "        lagre_og_skriv_statistikk()\n",
+    "        exit()\n",
+    "    return svar\n",
+    "\n",
+    "def les_streng (spm):\n",
+    "    svar = \"\"\n",
+    "    while svar == \"\":\n",
+    "        svar = sjekk_svar ( spm)\n",
+    "    return svar\n",
+    "\n",
+    "def les_ja_nei (spm):\n",
+    "    svar = \"\"\n",
+    "    while not ( svar == \"ja\" or svar == \"nei\"):\n",
+    "        svar = sjekk_svar ( spm)\n",
+    "    return svar == \"ja\"\n",
+    "\n",
+    "def les_tall (spm):\n",
+    "    def sjekk_tall ( svar ):\n",
+    "            #Returnerer True hvis svar kan konverteres til et positivt heltall (uten +); False ellers\n",
+    "        if svar == \"\":\n",
+    "            return False\n",
+    "        for c in svar :\n",
+    "            if not (ord(\"0\") <= ord(c) <= ord(\"9\")):\n",
+    "                return False\n",
+    "        return True\n",
+    "    while True :\n",
+    "        svar = sjekk_svar ( spm)\n",
+    "        if sjekk_tall ( svar ):\n",
+    "            return int( svar )\n",
+    "while True :\n",
+    "    print (\"\\nVelkommen til spørreundersøkelsen!\\n\")\n",
+    "    kjonn = les_streng (\" Hvilket kjønn er du? [f/m]: \")\n",
+    "    if not ( kjonn == \"m\" or kjonn == \"f\" or kjonn == \"ib\"):\n",
+    "        continue\n",
+    "    alder = les_tall (\" Hvor gammel er du?: \")\n",
+    "    if alder < 16 or alder > 25:\n",
+    "        print(\"Du kan dessverre ikke ta denne undersøkelsen\")\n",
+    "        continue\n",
+    "    resultater[0] += ( kjonn == \"f\" )\n",
+    "    resultater[1] += ( kjonn == \"m\" )\n",
+    "    resultater[2] += ( kjonn == \"ib\" )\n",
+    "    fag = les_ja_nei (\" Tar du et eller flere fag? [ja/nei ]: \")\n",
+    "    resultater[3] += fag\n",
+    "    if not fag :\n",
+    "        continue\n",
+    "    if alder <  22:\n",
+    "        fag_ITGK = les_ja_nei (\" Tar du ITGK? [ja/nei]: \")\n",
+    "    else:\n",
+    "        fag_ITGK = les_ja_nei (\" Tar du virkelig ITGK?: \")\n",
+    "    resultater[4] += fag_ITGK\n",
+    "    timer_lekser = les_tall (\" Hvor mange timer bruker du daglig (i snitt) på lekser?: \")\n",
+    "    resultater[5] += timer_lekser\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "i)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import matplotlib.pyplot as plt\n",
+    "import numpy as np\n",
+    "\n",
+    "def plot_resultater():\n",
+    "    res = np.array([3, 4, 5, 12, 10]) # les_statistikk()[0:-1]\n",
+    "    x = ('Menn', 'Kvinner', 'Ikke-binære', 'Fag', 'ITGK')\n",
+    "\n",
+    "    plt.bar(x, res, align='center', alpha=0.5)\n",
+    "    plt.ylabel('Antall')\n",
+    "    plt.title('Resultater fra spørreundersøkelse')\n",
+    "\n",
+    "    plt.show()\n",
+    "    \n",
+    "plot_resultater()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.12 ('MasterSH')",
+   "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.9.12"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "1af34073cf870790cfc76b9595972df681b22c7711d0d010a36b0715767a3067"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Euklids algoritme - lf.ipynb b/Losningsforslag/Oving4/Euklids algoritme - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..d557ae3e6399bbd445a284ceb8276816bf78de52
--- /dev/null
+++ b/Losningsforslag/Oving4/Euklids algoritme - lf.ipynb	
@@ -0,0 +1,46 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def gcd(a, b):\n",
+    "    while b != 0:       #kan også bruke 'while b:', siden betingelsen av et tall b blir sett på som True så lenge b!=0\n",
+    "        # a, b = b, a % b\n",
+    "        gammel_b = b\n",
+    "        b = a % b\n",
+    "        a = gammel_b\n",
+    "    return a\n",
+    "def reduce_fraction (a, b):\n",
+    "    divisor = gcd(a, b)\n",
+    "    return a / divisor , b / divisor\n",
+    "print (\"%d/%d\" % reduce_fraction (5, 10))\n",
+    "print (\"%d/%d\" % reduce_fraction (4, 2))\n",
+    "print (\"%d/%d\" % reduce_fraction (42 , 13))"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Globale variabler - lf.ipynb b/Losningsforslag/Oving4/Globale variabler - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..9e2166f67af8c8132111ed223ed472843af41d81
--- /dev/null
+++ b/Losningsforslag/Oving4/Globale variabler - lf.ipynb	
@@ -0,0 +1,61 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#######\n",
+    "# Del A\n",
+    "#######\n",
+    "  \n",
+    "GRAVITY = 9.81\n",
+    " \n",
+    "def get_fall_time(distance):\n",
+    "  return math.sqrt(2 * distance / GRAVITY)\n",
+    " \n",
+    "def main():\n",
+    "  distance = int(input('Antallet meter objektet skal ramle: '))\n",
+    "  time = get_fall_time(distance)\n",
+    "  print('Det tar', time, 'sekunder å ramle', distance, 'meter')\n",
+    " \n",
+    "if __name__ == \"__main__\":\n",
+    "  main()\n",
+    " \n",
+    " \n",
+    "#######\n",
+    "# Del B\n",
+    "#######\n",
+    "  \n",
+    "# Angående den gitte løsningen på problemet, står en liten diskusjon angående dette i tutorialen på toppen av siden.\n",
+    "  \n",
+    "# Endre funksjonen i forrige oppgave til noe som ligner dette\n",
+    "  \n",
+    "def get_fall_time(distance, gravity=GRAVITY):\n",
+    "  return math.sqrt(2 * distance / gravity)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Grunnleggende om funksjoner lf.ipynb b/Losningsforslag/Oving4/Grunnleggende om funksjoner lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..7224530e0891089c9f9d54fcad1cfa421a6b8fdb
--- /dev/null
+++ b/Losningsforslag/Oving4/Grunnleggende om funksjoner lf.ipynb	
@@ -0,0 +1,208 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def siksak():\n",
+    "     print()\n",
+    "     print(\"**  **  **  **  **  **  **  **  **\")\n",
+    "     print(\"  **  **  **  **  **  **  **  **\")\n",
+    "     print() \n",
+    "  \n",
+    "print(\"Data fra spørreundersøkelse\")\n",
+    "siksak()\n",
+    "print(\"Del 1: ... div. data her, ikke vist\")\n",
+    "siksak()\n",
+    "print(\"Del 2: ... mer data ...\")\n",
+    "siksak()\n",
+    "print(\"Del 3: ... enda mer data ...\")\n",
+    "siksak()\n",
+    "print(\"Del 4: ... ytterligere data ...\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b) Løsningen her er definisjonen av superlativ() samt bruken av dette i en print midtveis, samt i kodefragmentet nederst. Disse tre er markert med ###"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def komparativ(adj):\n",
+    "    # GROVT FORENKLET; BLIR MINST 20 LINJER\n",
+    "    if len(adj) >= 8: # unøyaktig\n",
+    "        svar = \"mer \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"ere\"\n",
+    "    return svar\n",
+    " \n",
+    "def superlativ(adj):    ###\n",
+    "    if len(adj) >= 8:\n",
+    "        svar = \"mest \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"est\"\n",
+    "    return svar\n",
+    " \n",
+    "#DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN\n",
+    "adj = input(\"Beskriv deg selv med et adjektiv: \")\n",
+    "print(\"Hah! Jeg er mye\", komparativ(adj), \"!\")\n",
+    "print(\"Jeg er faktisk\", superlativ(adj), \"i hele verden!\") ###\n",
+    " \n",
+    "# DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE\n",
+    "adj = input(\"Skriv inn et adjektiv: \")\n",
+    "svar = input(\"Hva er komparativ for\", adj, \"? \")\n",
+    "fasit = komparativ(adj)\n",
+    "if svar == fasit:\n",
+    "    print(\"Korrekt!\")\n",
+    "else:\n",
+    "    print(\"Feil, det var\", fasit)\n",
+    " \n",
+    "svar = input(\"Hva er superlativ for\", adj, \"? \") ### og videre nedover:\n",
+    "fasit = superlativ(adj)\n",
+    "if svar == fasit:\n",
+    "    print(\"Korrekt!\")\n",
+    "else:\n",
+    "    print(\"Feil, det var\", fasit)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "EKSTRAOPPGAVE: Gitt likheten i if-else delene for komparativ og superlativ, lager vi en funksjon tilbakemelding() som dekker begge disse.\n",
+    "\n",
+    "Som man kan se, benytter denne funksjonen seg av print() som tutorial sa ofte ikke er lurt. Her er det dog greit, siden hovedpoenget med funksjonen tilbakemelding() nettopp er å kommunisere med brukeren."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def komparativ(adj):\n",
+    "    # GROVT FORENKLET; BLIR MINST 20 LINJER\n",
+    "    if len(adj) >= 8: # unøyaktig\n",
+    "        svar = \"mer \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"ere\"\n",
+    "    return svar\n",
+    " \n",
+    "def superlativ(adj):\n",
+    "    if len(adj) >= 8:\n",
+    "        svar = \"mest \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"est\"\n",
+    "    return svar\n",
+    " \n",
+    "def tilbakemelding(svar, fasit):\n",
+    "    if svar == fasit:\n",
+    "        print(\"Korrekt!\")\n",
+    "    else:\n",
+    "        print(\"Feil, det var\", fasit)\n",
+    " \n",
+    "#DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN\n",
+    "adj = input(\"Beskriv deg selv med et adjektiv: \")\n",
+    "print(\"Hah! Jeg er mye\", komparativ(adj), \"!\")\n",
+    "print(\"Jeg er faktisk\", superlativ(adj), \"i hele verden!\")\n",
+    " \n",
+    "# DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE\n",
+    "adj = input(\"Skriv inn et adjektiv: \")\n",
+    "svar = input(\"Hva er komparativ for\", adj, \"? \")\n",
+    "tilbakemelding(adj, komparativ(adj))\n",
+    "svar = input(\"Hva er superlativ for\", adj, \"? \")\n",
+    "tilbakemelding(adj, superlativ(adj))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def komparativ(adj):\n",
+    "    # GROVT FORENKLET; BLIR MINST 20 LINJER\n",
+    "    if len(adj) >= 8: # unøyaktig\n",
+    "        svar = \"mer \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"ere\"\n",
+    "    return svar\n",
+    " \n",
+    "def superlativ(adj):\n",
+    "    if len(adj) >= 8:\n",
+    "        svar = \"mest \" + adj\n",
+    "    else:\n",
+    "        svar = adj + \"est\"\n",
+    "    return svar\n",
+    " \n",
+    "def tilbakemelding(svar, fasit):\n",
+    "    if svar == fasit:\n",
+    "        print(\"Korrekt!\")\n",
+    "    else:\n",
+    "        print(\"Feil, det var\", fasit)\n",
+    " \n",
+    "def main():\n",
+    "    #DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN\n",
+    "    adj = input(\"Beskriv deg selv med et adjektiv: \")\n",
+    "    print(\"Hah! Jeg er mye\", komparativ(adj), \"!\")\n",
+    "    print(\"Jeg er faktisk\", superlativ(adj), \"i hele verden!\")\n",
+    "    # DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE\n",
+    "    adj = input(\"Skriv inn et adjektiv: \")\n",
+    "    svar = input(\"Hva er komparativ for\", adj, \"? \")\n",
+    "    tilbakemelding(adj, komparativ(adj))\n",
+    "    svar = input(\"Hva er superlativ for\", adj, \"? \")\n",
+    "    tilbakemelding(adj, superlativ(adj))\n",
+    " \n",
+    "main()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.12 ('MasterSH')",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 2
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython2",
+   "version": "3.9.12"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "1af34073cf870790cfc76b9595972df681b22c7711d0d010a36b0715767a3067"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Lokale variabler - lf.ipynb b/Losningsforslag/Oving4/Lokale variabler - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..e26ef5d5f88deabc1cb50a48f0cdf4e216c1e9b4
--- /dev/null
+++ b/Losningsforslag/Oving4/Lokale variabler - lf.ipynb	
@@ -0,0 +1,62 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a) Kodesnutt 3 vil kjøre uten å krasje siden cakes-funksjonen som inneholder feilen aldri kalles. Dvs. at koden med feilen aldri blir prøvd kjørt, og dermed krasjer heller ikke programmet.\n",
+    "\n",
+    "Feilen i kodesnutt 1: cake-variabelen i cakes-funksjonen blir definert etter at programmet har prøvd å kjøre kode som bruker den.\n",
+    "\n",
+    "Feilen i kodesnutt 2: cakes-funksjonen prøver å bruke den lokale variabelen cupcake i cupcakes-funksjonen.\n",
+    "\n",
+    "Feilen i kodesnutt 3: cake-variabelen blir aldri definert.\n",
+    "\n",
+    "b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def divide(x,y):\n",
+    "    num = x//y\n",
+    "    print(\"Heltallsdivisjon av\",x,\"over\",y,\"gir\",num)\n",
+    " \n",
+    "def square(x):\n",
+    "    num = x**2\n",
+    "    print(\"Kvadratet av\",x,\"er\",num)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c) Det vil ikke ha noen innvirkning på koden, siden begge num-variablene er lokale variabler i hver sin funksjon, og vil dermed ikke ha noen innvirkning på hverandre."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Multiplikasjon - lf.ipynb b/Losningsforslag/Oving4/Multiplikasjon - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b2094714aa02a9caee09ae104aa522fc8a83027a
--- /dev/null
+++ b/Losningsforslag/Oving4/Multiplikasjon - lf.ipynb	
@@ -0,0 +1,78 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "tol = float(input(\"Skriv inn tol: \"))\n",
+    " \n",
+    "def funksjon_produkt(tol):\n",
+    "        count = 1\n",
+    "        prod = 1\n",
+    "        endring = prod*(1+(1/(count)**2)) - prod\n",
+    "        while endring > tol:\n",
+    "            prod = prod*(1+(1/(count)**2))\n",
+    "            count += 1\n",
+    "            endring = prod*(1+(1/(count)**2)) - prod\n",
+    "        return prod, count\n",
+    " \n",
+    "print(\"Produktet ble %.2f etter %.d iterasjoner\" %(mult(tol)))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "def recursive_multi(tol, n = 1):\n",
+    "    new = 1 + math.pow(1.0/n, 2.0)\n",
+    "    if new > tol+1:\n",
+    "        return new * recursive_multi(tol, n+1)\n",
+    "    else:\n",
+    "        print(\"Rekursjonsdybden er\", n-1)\n",
+    "        return new\n",
+    " \n",
+    "print('Produktet ble:', format(recursive_multi(0.01),'.2f'))"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Not quite Blackjack - lf.ipynb b/Losningsforslag/Oving4/Not quite Blackjack - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..216a209e09c0af8e7bb1d0592d63bcfa25c5c7ba
--- /dev/null
+++ b/Losningsforslag/Oving4/Not quite Blackjack - lf.ipynb	
@@ -0,0 +1,88 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Dette er én mulig måte å løse oppgaven på\n",
+    "import random\n",
+    " \n",
+    "def main():\n",
+    "    dealer_c1 = draw_card()\n",
+    "    dealer_c2 = draw_card()\n",
+    "    vd = get_value(dealer_c1,dealer_c2)\n",
+    "    print(\"Dealers cards are\",dealer_c1,\"and ?\")\n",
+    "    c1 = draw_card()\n",
+    "    c2 = draw_card()\n",
+    "    while True:\n",
+    "        vp = get_value(c1,c2)\n",
+    "        if is_Loss(c1,c2):\n",
+    "            print(\"You got:\",vp)\n",
+    "            print(\"You lost\")\n",
+    "            return\n",
+    "        print(\"Your score is:\",vp)\n",
+    "        s = input(\"Do you want another card? (J/N) \")\n",
+    "        if s.upper() == 'J':\n",
+    "            c2 = vp\n",
+    "            c1 = draw_card()\n",
+    "            continue\n",
+    "        print(\"Dealers score is:\",vd)\n",
+    "        if is_Win(vp,vd):\n",
+    "            print(\"You won!\")\n",
+    "        else:\n",
+    "            print(\"You lost\")\n",
+    "        break\n",
+    " \n",
+    "def draw_card():\n",
+    "    c = random.randint(1,13)\n",
+    "    if c > 10:\n",
+    "        c = 10\n",
+    "    return c\n",
+    " \n",
+    "def is_Loss(c1,c2):\n",
+    "    if get_value(c1,c2)>21:\n",
+    "        return True\n",
+    "    return False\n",
+    " \n",
+    "def get_value(c1,c2):\n",
+    "    if c1 == 1 and c2 == 1:\n",
+    "        return c1+11\n",
+    "    if c1 == 1 and not c2+11>21:\n",
+    "        return c2+11\n",
+    "    if c2 == 1 and not c1+11>21:\n",
+    "        return c1+11\n",
+    "    return c1+c2\n",
+    " \n",
+    "def is_Win(value_player,value_dealer):\n",
+    "    if value_dealer > 21 or value_player > value_dealer:\n",
+    "        return True\n",
+    "    return False\n",
+    " \n",
+    "main()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Poenggrenser - lf.ipynb b/Losningsforslag/Oving4/Poenggrenser - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..76fd9124997a9559cb88dc7288c80e39eba8fe90
--- /dev/null
+++ b/Losningsforslag/Oving4/Poenggrenser - lf.ipynb	
@@ -0,0 +1,170 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "a9d36685",
+   "metadata": {},
+   "source": [
+    "a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "122909aa",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "\n",
+    "\n",
+    "def min_max_score(operation):\n",
+    "    poenggrenser = np.loadtxt('Poenggrenser.txt')\n",
+    "    aar = np.loadtxt('Ã…r.txt')\n",
+    "    \n",
+    "    if operation.lower() == 'max':\n",
+    "        best = float('-inf')\n",
+    "        ind = -1\n",
+    "        for i, value in enumerate(poenggrenser):\n",
+    "            if value > best:\n",
+    "                ind, best = i, value\n",
+    "        return aar[ind], best\n",
+    "    \n",
+    "    elif operation.lower() == 'min':\n",
+    "        best = float('inf')\n",
+    "        ind = -1\n",
+    "        for i, value in enumerate(poenggrenser):\n",
+    "            if value < best:\n",
+    "                ind, best = i, value\n",
+    "        return aar[ind], best\n",
+    "    \n",
+    "    return -1\n",
+    "\n",
+    "# Eventuelt\n",
+    "\n",
+    "def min_max_score2(operation):\n",
+    "    poenggrenser = np.loadtxt('Poenggrenser.txt')\n",
+    "    aar = np.loadtxt('Ã…r.txt')\n",
+    "    \n",
+    "    op = (operation == 'max')\n",
+    "    \n",
+    "    best = float('-inf') * (op * 2 - 1)\n",
+    "    ind = -1\n",
+    "    \n",
+    "    for i, value in enumerate(poenggrenser):\n",
+    "        if value > best and op or value < best and not op:\n",
+    "            ind, best = i, value\n",
+    "            \n",
+    "    return aar[ind], best"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "60892f68",
+   "metadata": {},
+   "source": [
+    "b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "2befbed8",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def better_min_max_score(operation):\n",
+    "    poenggrenser = np.loadtxt('Poenggrenser.txt')\n",
+    "    aar = np.loadtxt('Ã…r.txt')\n",
+    "    \n",
+    "    m = -1\n",
+    "    \n",
+    "    if operation.lower() == 'max':\n",
+    "        m = poenggrenser.max()\n",
+    "    elif operation.lower() == 'min':\n",
+    "        m = poenggrenser.min()\n",
+    "    \n",
+    "    return aar[np.where(poenggrenser == m)][0], m"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6b91e741",
+   "metadata": {},
+   "source": [
+    "c)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "1259911c",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import matplotlib.pyplot as plt\n",
+    "\n",
+    "x = np.loadtxt('Ã…r.txt')\n",
+    "y = np.loadtxt('Poenggrenser.txt')\n",
+    "\n",
+    "plt.plot(x, y)\n",
+    "\n",
+    "# Ekstraoppgave start\n",
+    "xmax, ymax = better_min_max_score('max')\n",
+    "xmin, ymin = better_min_max_score('min')\n",
+    "\n",
+    "# Dette er ekstra til ekstraoppgaven\n",
+    "ax = plt.gca()\n",
+    "ax.annotate('Max', xy=(xmax, ymax), xytext=(xmax + .1, ymax + .03))\n",
+    "ax.annotate('Min', xy=(xmin, ymin), xytext=(xmin + .1, ymin - .08))\n",
+    "# Slutt på ekstra til ekstraoppgaven\n",
+    "\n",
+    "\n",
+    "plt.scatter([xmax, xmin], [ymax, ymin], color = 'red')\n",
+    "# Ekstraoppgave slutt\n",
+    "\n",
+    "plt.show()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.7 ('tdt4195')",
+   "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.9.7"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "63b89d9bfc14eb4486c27c9b239bf0a08c4c63a21c176f83036370f0e204c130"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Losningsforslag/Oving4/Poenggrenser.txt b/Losningsforslag/Oving4/Poenggrenser.txt
new file mode 100644
index 0000000000000000000000000000000000000000..32bf31d4f051a32be838b7fb1c73d402170c5349
--- /dev/null
+++ b/Losningsforslag/Oving4/Poenggrenser.txt
@@ -0,0 +1,10 @@
+45.037838
+45.425676
+46.107595
+46.452113
+46.564286
+47.632353
+46.311111
+44.260902
+44.807092
+46.624762
diff --git a/Losningsforslag/Oving4/Resultater.txt b/Losningsforslag/Oving4/Resultater.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9b69e5c1a63f8a002f31d39b04127b5bfd7292d
--- /dev/null
+++ b/Losningsforslag/Oving4/Resultater.txt
@@ -0,0 +1,6 @@
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
diff --git a/Losningsforslag/Oving4/Sekantmetoden - lf.ipynb b/Losningsforslag/Oving4/Sekantmetoden - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..dbcb5416f3143885aa068cfb0319eab02f1cab0d
--- /dev/null
+++ b/Losningsforslag/Oving4/Sekantmetoden - lf.ipynb	
@@ -0,0 +1,68 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import math\n",
+    " \n",
+    "def f(x):\n",
+    "    return (x-12)*math.exp(0.5*x) - 8*(x+2)**2\n",
+    " \n",
+    "def g(x):\n",
+    "    return -x -2*x**2 - 5*x**3 + 6*x**4\n",
+    " \n",
+    "def differentiate(x_k, x_k1, func):\n",
+    "    return (func(x_k) - func(x_k1))/(x_k - x_k1)\n",
+    " \n",
+    "def secant_method(x_0,x_1,func,tol):\n",
+    "    diff = abs(x_1 -x_0)\n",
+    "    while diff > tol:\n",
+    "        x_2 = x_1 - func(x_1)/differentiate(x_1,x_0,func)\n",
+    "        diff = abs(x_2 - x_1)\n",
+    "        x_0 = x_1\n",
+    "        x_1 = x_2\n",
+    "    return x_2\n",
+    " \n",
+    "def main():\n",
+    "    print(f(0))\n",
+    "    print(g(1))\n",
+    "    print(differentiate(9,10,f))\n",
+    "    x = secant_method(11,13,f,0.00001)\n",
+    "    print(x)\n",
+    "    print(f(x))\n",
+    "    x = secant_method(1,2,g,0.00001)\n",
+    "    print(x)\n",
+    "    print(g(x))\n",
+    "    x = secant_method(0,1,g,0.00001)\n",
+    "    print(x)\n",
+    "    print(g(x))\n",
+    " \n",
+    "main()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/Varierte funksjoner - lf.ipynb b/Losningsforslag/Oving4/Varierte funksjoner - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b57519693eae7e7e5a811ed4d8392cb8f4028bec
--- /dev/null
+++ b/Losningsforslag/Oving4/Varierte funksjoner - lf.ipynb	
@@ -0,0 +1,180 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a) absoluttverdi"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Skriv funksjonen din her\n",
+    "def absol(x):\n",
+    "   if x >= 0:\n",
+    "      svar = x\n",
+    "   else:\n",
+    "      svar = -x\n",
+    "   return svar\n",
+    "  \n",
+    "# skript for å teste funksjonen:\n",
+    "print(\"Absoluttverdien til 5 er\", absol(5))\n",
+    "print(\"Absoluttverdien til -3 er\", absol(-3))\n",
+    "print(\"Absoluttverdien til 0 er\", absol(0))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "* Alternativt kan man også skrive return x og return -x direkte på if og else-alternativene.\n",
+    "\n",
+    "b) knop til km/t"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# skriv funksjonen din her\n",
+    "def knop_til_kmt(knop):\n",
+    "    m_sek = knop / 1.9438444924406\n",
+    "    km_t = m_sek * 3.6\n",
+    "    return km_t\n",
+    " \n",
+    "# skript\n",
+    "knop = float(input(\"Oppgi fart i knop: \"))\n",
+    "km_t = knop_til_kmt(knop)\n",
+    "print(\"Det blir\", round(km_t, 2), \"km/t\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c) Imperial til cm"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# skriv funksjonen din her\n",
+    "def imp2cm(ft, inch):\n",
+    "    inch = inch + ft * 12\n",
+    "    cm = inch * 2.54\n",
+    "    return round(cm)\n",
+    " \n",
+    "# skript\n",
+    "fot = int(input(\"Oppgi antall fot: \"))\n",
+    "tommer = int(input(\"Oppgi antall tommer: \"))\n",
+    "cm = imp2cm(fot, tommer)\n",
+    "print(\"Det blir\", cm, \"cm\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "d) CMYK til RGB"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# skriv funksjonen din her\n",
+    "def CMYK2RGB(C, M, Y, K):\n",
+    "    R = round(255 * (1-C) * (1-K))\n",
+    "    G = round(255 * (1-M) * (1-K))\n",
+    "    B = round(255 * (1-Y) * (1-K))\n",
+    "    return R, G, B\n",
+    "  \n",
+    "print(\"Oppgi farge i CMYK og få det konvertert til RGB.\")\n",
+    "C = float(input(\"C: \"))\n",
+    "M = float(input(\"M: \"))\n",
+    "Y = float(input(\"Y: \"))\n",
+    "K = float(input(\"K: \"))\n",
+    "R, G, B = cmyk2rgb(C, M, Y, K)\n",
+    "print(\"Som RGB:\", R, G, B)\n",
+    "  \n",
+    "# viser fargen på skjermen:\n",
+    "from turtle import colormode, bgcolor\n",
+    "colormode(255)\n",
+    "bgcolor(R, G, B)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Denne løsningen kan gjøres litt penere ved å dele inn i flere funksjoner:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def CMYK2RGB(C, M, Y, K):\n",
+    "    R = round(255 * (1-C) * (1-K))\n",
+    "    G = round(255 * (1-M) * (1-K))\n",
+    "    B = round(255 * (1-Y) * (1-K))\n",
+    "    return R, G, B\n",
+    " \n",
+    "def les_inn_CMYK():\n",
+    "    print(\"Oppgi farge i CMYK og få det konvertert til RGB.\")\n",
+    "    C = float(input(\"C: \"))\n",
+    "    M = float(input(\"M: \"))\n",
+    "    Y = float(input(\"Y: \"))\n",
+    "    K = float(input(\"K: \"))\n",
+    "    return C, M, Y, K\n",
+    "  \n",
+    "def vis_farge(R, G, B):\n",
+    "    from turtle import colormode, bgcolor\n",
+    "    colormode(255)\n",
+    "    bgcolor(R, G, B)\n",
+    "  \n",
+    "def main():\n",
+    "    C, M, Y, K = les_inn_CMYK()\n",
+    "    R, G, B = cmyk2rgb(C, M, Y, K)\n",
+    "    print(\"Som RGB:\", R, G, B)\n",
+    "    vis_farge(R, G, B)\n",
+    "  \n",
+    "main()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Losningsforslag/Oving4/primtall - lf.ipynb b/Losningsforslag/Oving4/primtall - lf.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..c7ae83c8ff7efe7b1fa5801cc686ce70655d21a9
--- /dev/null
+++ b/Losningsforslag/Oving4/primtall - lf.ipynb	
@@ -0,0 +1,86 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def divisable(a,b):\n",
+    "    return (a%b==0)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def isPrime(a):\n",
+    "    for b in range(2,a):\n",
+    "        if divisable(a,b):\n",
+    "            return False\n",
+    "    return True"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "c)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def isPrime2(a):\n",
+    "    if a == 2:\n",
+    "        return True\n",
+    "    if (divisable(a,2)):\n",
+    "        return False\n",
+    "    for b in range(3,round(pow(a,0.5)+0.5),2):\n",
+    "        if divisable(a,b):\n",
+    "            return False\n",
+    "    return True"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 2",
+   "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.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git "a/Losningsforslag/Oving4/\303\205r.txt" "b/Losningsforslag/Oving4/\303\205r.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..7c12313f457295e8bb868fc64e12ed687981521e
--- /dev/null
+++ "b/Losningsforslag/Oving4/\303\205r.txt"
@@ -0,0 +1,10 @@
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
diff --git a/Ovinger/Oving7/Bursdagsdatabasen.ipynb b/Ovinger/Oving7/Bursdagsdatabasen.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..2016644958204affdac3333847034425973049aa
--- /dev/null
+++ b/Ovinger/Oving7/Bursdagsdatabasen.ipynb
@@ -0,0 +1,568 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li class=\"active\"><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Bursdagsdatabasen\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "* Dictionaries\n",
+    "* Exceptions\n",
+    "\n",
+    "I denne oppgaven skal du lage en metode for å oppdatere en dictionary (**birthdays**) bestående av datoer og navn. Dette må du gjøre ved å benytte deg av unntakshåndtering(exceptions). \n",
+    "\n",
+    "Vemund, som er en smule glemsk når det gjelder bursdager, ønsker å lage en stor database med bursdagene til alle vennene sine.\n",
+    "\n",
+    "For å skaffe seg et godt utgangspunkt har han etterspurt og fått tilsendt følgende database (i form av en python-dictionary) fra IDIs seksjon for “data and information management”, som har det statlige ansvaret for lagring av bursdager.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T12:33:55.686271Z",
+     "start_time": "2019-07-04T12:33:55.679293Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "birthdays = {\n",
+    "\"22 nov\": [\"Bob Bernt\", \"Mathias\"],\n",
+    "\"20 mar\": \"Simen\",\n",
+    "\"31 okt\": [\"Aragusta\", \"Carina\"],\n",
+    "\"12 jan\": \"Silje\",\n",
+    "\"3 sep\": \"Tobias\",\n",
+    "\"5 jul\": [\"Martin\", \"Øystein\"],\n",
+    "\"11 mar\": \"Miriam\"\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Databasen består av datonøkler(**string**) som peker til enten et navn(**string**) eller en **liste** med navn til personer som har bursdag den datoen.\n",
+    "\n",
+    "Dessverre er ikke denne databasen særlig komplett, så Vemund ønsker å legge til nye bursdager etter hvert som han får nye venner.\n",
+    "\n",
+    "Han har laget følgende funksjon for å gjøre dette:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:42:26.589892Z",
+     "start_time": "2019-07-04T10:42:26.583644Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "def add_birthday_to_date(date, name):\n",
+    "    birthdays[date].append(name)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Som f.eks. kan kalles slik:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:42:30.769632Z",
+     "start_time": "2019-07-04T10:42:30.765186Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "add_birthday_to_date(\"31 okt\", \"Gunnar\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Vemund møter derimot på et problem når han prøver å legge til et bursdagsbarn på datoer som ikke finnes, eller bare har ett bursdagsbarn fra før.\n",
+    "\n",
+    "Istedet for at funksjonen gjør som den skal, grynter den og spytter tilbake to forskjellige exceptions (unntak) til Vemund. Prøv å kjør kodesnuttene selv, og se hva som skjer. Husk å kjør kodesnuttene som definerer databasen og funksjonen først."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:42:33.057791Z",
+     "start_time": "2019-07-04T10:42:33.040309Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "add_birthday_to_date (\"12 jan\", \"Sindre\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:42:52.219179Z",
+     "start_time": "2019-07-04T10:42:52.202385Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "add_birthday_to_date (\"9 feb\", \"Lillian\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Den første feilen kommer av at verdien tilsvarende nøkkelen “12 jan” ikke er en liste, men en enkel streng.\n",
+    "\n",
+    "Den andre feilen kommer av at nøkkelen “9 feb” ikke finnes i databasen.\n",
+    "\n",
+    "Vemund ønsker at funksjonen tar hensyn til disse grensetilfellene.\n",
+    "\n",
+    "**Oppgave:** Løs disse problemene ved hjelp av Python sin støtte for unntakshåndtering der du benytter setningene try og except."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### Generelt om exceptions"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du ønsker å spørre brukeren om å skrive inn et heltall, kan det være ønskelig å lage variabelen slik: a = int(input(\"Skriv et tall: \")), men dette kan misforstås av brukeren. Brukeren svarer kanskje \"fjorten\", altså 14 skrevet med bokstaver. Ettersom du har brukt int() i variabelen a slik at brukerens input skal bli konvertert til et heltall, vil det komme en feilmelding. Prøv å skrive et tall med tekst i eksempelt under."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:44:40.501984Z",
+     "start_time": "2019-07-04T10:44:37.991989Z"
+    },
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "a = int(input(\"Skriv et tall:\"))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Eller la oss si at du ønsker å ta inn to tall og dele det første tallet på det andre tallet. Dersom det andre tallet er null vil du også få en feilmelding. Prøv selv under."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "a=10\n",
+    "b=int(input(\"Skriv et tall:\"))\n",
+    "print(a/b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "En elegant metode å håndtere disse feilmeldingene på er ved å bruke try og exceptions. Det kan minne en del om if/else bare at try/except kan håndtere flere ting og du trenger ikke å spesifisere noen betingelse. Alt du ønsker å utføre i koden skal skrives under try. except kjøres kun dersom noe går galt under try."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "try:\n",
+    "    a = int(input('Skriv et tall: '))\n",
+    "    b = int(input('Skriv et tall: '))\n",
+    "    print(a/b)\n",
+    "except:\n",
+    "    print('Noe har gått galt! Har du husket at det er umulig å dele på null'\n",
+    "          'eller at du skulle skrive inn et heltall her?')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom brukeren skriver inn noe annet enn et heltall eller skriver at det andre tallet er null, blir det under except printet. Denne feilmeldingen kan være litt forvirrende for brukeren ettersom han eller hun ikke vet hva som gikk galt. Var det at det ble delt på null eller at noe annet enn et heltall ble skrevet inn? For å gjøre det klarere kan man dele inn except i ulike punkter som håndterer ulike feil. Som man kan se i det første bildet over kom det en feilmelding kalt \"ValueError\", og på bildet under kom det en feilmelding kalt \"ZeroDivisionError\", la oss bruke disse:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "try:\n",
+    "    a = int(input('Skriv et tall: '))\n",
+    "    b = int(input('Skriv et tall: '))\n",
+    "    print(a/b)\n",
+    "except ValueError:\n",
+    "    print('Husket du å skrive inn et heltall her?')\n",
+    "except ZeroDivisionError:\n",
+    "    print(\"Husk at du ikke kan dele på null\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:49:02.515720Z",
+     "start_time": "2019-07-04T10:49:02.505229Z"
+    },
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Nå vil brukeren få en mer forklarende feilmeldinger. Prøv selv!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Legg til funksjonalitet til funksjonen `add_birthday_to_date(date, name)` slik at det opprettes en liste med flere personer, dersom flere har bursdag på samme dag. **Du kan fortsette på funksjonen skrevet over i oppgaven.**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dette hindrer en AttributeError."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Legg til funksjonalitet til funksjonen `add_birthday_to_date(date, name)` slik at det er mulig å legge til nye bursdager på nye datoer i dictionarien. **Du kan fortsette på funksjonen skrevet over i oppgaven.**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "ExecuteTime": {
+     "end_time": "2019-07-04T10:57:57.995986Z",
+     "start_time": "2019-07-04T10:57:57.987398Z"
+    },
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dette hindrer en KeyError."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### Testkode:"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Du kan teste at unntakshåndteringen fungerer ved å kjøre de samme to grensetilfellene som tidligere:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "add_birthday_to_date(\"12 jan\", \"Sindre\")\n",
+    "add_birthday_to_date(\"9 feb\", \"Lillian\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dette skal nå oppdatere databasen uten feilmeldinger. \n",
+    "\n",
+    "Utskrift av birthdays etter kjøring av \"Testkode\" skal gi:\n",
+    "\n",
+    "```python\n",
+    "{'22 nov': ['Bob Bernt', 'Mathias'], '20 mar': 'Simen, '31 okt': ['Aragusta', 'Carina'], '12 jan': ['Silje', 'Sindre'], '3 sep': 'Tobias', '5 jul': ['Martin', 'Øystein'], '11 mar': 'Miriam', '9 feb': 'Lillian'}\n",
+    "```\n",
+    "\n",
+    "Sjekk selv med koden under."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(birthdays)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Enhetstesting.ipynb b/Ovinger/Oving7/Enhetstesting.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..d808cc5eaad0856ab0968e0ffab2cdfafef2f4c4
--- /dev/null
+++ b/Ovinger/Oving7/Enhetstesting.ipynb
@@ -0,0 +1,595 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "af689029",
+   "metadata": {},
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li class = \"active\"><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Enhetstesting\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "* Enhetstesting"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "3fbf8fc3",
+   "metadata": {
+    "heading_collapsed": true
+   },
+   "source": [
+    "## Tutorial: Enhetstesting"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b164cff1",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Testing av kode du selv eller andre har skrevet er en stor og viktig del av programmering. Man kan teste koden sin på mange forksjellige måter. Både manuelt og automatisk. Med manuell testing foregår uten en plan, man kjører koden sin flere ganger med forskjellige inputs og observerer output. Automatisk testing, derimot, er laget med en plan. Da er det skrevet tester som tester spesifikke deler av koden som vi har bestemt at vi ønsker å teste. Det finnes også flere typer automatiske tester, noen av de er:\n",
+    "\n",
+    "* Enhetstesting - Tester enkelte funksjoner\n",
+    "* Integrasjonstesting - Tester større deler av programmet som en helhet\n",
+    "* Systemtestig - Tester hele systemet\n",
+    "* Akseptansetesting - F.eks en alpha eller betatest, hvor systemet/programmet testes av andre enn programmererene selv. Ofte siste testing før programmet/systemet går \"live\".\n",
+    "\n",
+    "I denne øvingen skal vi gå litt mer inn på _Enhetstesting_. Som nevnt i listen over er Enhetstesting å teste hver enkelt funksjon. Altså teste at den oppfører seg som forventet. Når man tester en funksjon er det viktig å tenke på typiske \"edge cases\". Det vil si, tilfellene som man ikke nødvendigvis tenker at funksjonen skal brukes til. F.eks hvis du skriver en funksjon som skal legge til et telefonnummer i en adressebok. Du tenker da sikkert at alle telefonnumre som skal legges til er 8 siffer. Dette er ikke nødvendigvis realiteten hvis funksjonen skal brukes av andre enn deg selv. Noen setter kanskje inn et nummer som bare er 7 siffer, og det er jo ikke et gyldig, norsk mobilnummer. Hvis poenget med funksjonen er at det ikke skal være mulig å sende inn mobilnumre som ikke er 8 siffer, skriver man en test for å sjekke dette."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "366ee49b",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "d = {}\n",
+    "def save_phone_number(name, number):\n",
+    "    return True\n",
+    "    \n",
+    "def test_save_phone_number():\n",
+    "    assert not save_phone_number(\"Ola\", 1234567), \"Telefonummeret innheolder ikke 8 siffer!\"\n",
+    "\n",
+    "test_save_phone_number()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "c493228f",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Ved å kjøre kodeblokken over får man en `AssertionError`. Dette er fordi testen `test_save_phone_number` feiler. Syntaxen på en slik test er `assert <noe som skal bli True>, <Feilmelding>`. Over foventer testen at `save_phone_number` skal returnere `False`, da vi sender inn et telefonnummer som er for kort. Siden testen feilet, vet vi at noe er feil med funksjonen vår, og vi kan endre funksjonen vår:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "316859b0",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "d = {}\n",
+    "\n",
+    "def save_phone_number(name, number):\n",
+    "    if len(str(number)) != 8:\n",
+    "        return False\n",
+    "\n",
+    "def test_save_phone_number():\n",
+    "    assert not save_phone_number(\"Ola\", 1234567), \"Telefonummeret innheolder ikke 8 siffer!\"\n",
+    "    \n",
+    "test_save_phone_number()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6ab2729c",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Kodeblokken over gir ingen feilmelding, som vil si at funksjonen gjør det vi vil den skal gjøre (returnere `False`), i _akkurat dette tilfellet_. Vi har nå bare testet et tilfelle, som ofte ikke er nok. Vi kan legge inn flere `assert`s:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "75f1577a",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "d = {}\n",
+    "\n",
+    "def save_phone_number(name, number):\n",
+    "    if len(str(number)) != 8:\n",
+    "        return False\n",
+    "    \n",
+    "    return True\n",
+    "\n",
+    "def test_save_phone_number():\n",
+    "    assert not save_phone_number(\"Ola\", 1234567), \"Telefonummeret innheolder ikke 8 siffer!\"\n",
+    "    assert save_phone_number(\"Ola\", 12345678), \"Telefonnummeret skal kunne inneholde 8 siffer.\"\n",
+    "    assert d.get('Ola', None) == 12345678, 'Etter å ha kalt save_phone_number(\"Ola\", 12345678) skal Ola ligge i dictionarien d.'\n",
+    "    \n",
+    "test_save_phone_number()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5e4c66a0",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Som du ser ved å kjøre kodeblokken over feiler testen selvom vi nå returnerer `True` kun om nummeret inneholder 8 siffer. Problemet ligger nå i at vi forventer at funksjonen vår legger inn telefonnummeret i adresseboken, noe testen plukker opp at den ikke gjør. Legger vi til dette kjører testen fint:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3973c182",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "d = {}\n",
+    "\n",
+    "def save_phone_number(name, number):\n",
+    "    if len(str(number)) != 8:\n",
+    "        return False\n",
+    "    d[name] = number\n",
+    "    return True\n",
+    "\n",
+    "def test_save_phone_number():\n",
+    "    assert not save_phone_number(\"Ola\", 1234567), \"Telefonummeret innheolder ikke 8 siffer!\"\n",
+    "    assert save_phone_number(\"Ola\", 12345678), \"Telefonnummeret skal kunne inneholde 8 siffer.\"\n",
+    "    assert d.get('Ola', None) == 12345678, 'Etter å ha kalt save_phone_number(\"Ola\", 12345678) skal Ola ligge i dictionarien d.'\n",
+    "    \n",
+    "test_save_phone_number()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f49c9f2f",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Nå har vi fått testet litt forksjellig. Vi har testet at funksjonen ikke tillater mobilnummer som ikke er 8 siffer, og at den tillater mobilnummer som _er_ 8 siffer. Videre har vi sjekket at den korrekt legger til mobilnummeret i adresseboken vår. Du tenker kanskje at dette er nok tessting, men nei! Man bør gjerne teste med mange forskjellige inputs. For eksempel et tomt navn, et telefonnummer som er større enn 8 siffer, prøve å legge inn et nytt nummer på \"Ola\" og se at telefonnummeret oppdateres/ikke oppdateres."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "848b82e8",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Det er ikke alltid vi har lyst til å skrive veldig mange linjer med `assert` på egenhånd. Det kan være vi har en funksjon som har _veldig_ mange mulige tilfeller. Da kan vi bruke f.eks en for-løkke:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "49a5db20",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "def summer(x, y):\n",
+    "    return x + y\n",
+    "\n",
+    "def test_summer():\n",
+    "    for i in range(100):\n",
+    "        for j in range(100):\n",
+    "            res = summer(i, j)\n",
+    "            assert res == i + j, f'Forventet at summer skulle gi resulatet {i+j}, men var {res}'\n",
+    "test_summer()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8417b886",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Testen over kjører faktisk 1000 `asserts`. Det er litt lettere å gjøre det på den måten enn å måtte skrive 1000 `assert`s nedover slik som her:\n",
+    "\n",
+    "```python\n",
+    "assert summer(0, 0) == 0, 'Forventet at summer skulle gi resultatet 0'\n",
+    "assert summer(0, 1) == 1, 'Forventet at summer skulle gi resultatet 1'\n",
+    "assert summer(0, 2) == 2, 'Forventet at summer skulle gi resultatet 2'\n",
+    "...\n",
+    "assert summer(99, 98) == 197, 'Forventet at summer skulle gi resultatet 197'\n",
+    "assert summer(99, 99) == 198, 'Forventet at summer skulle gi resultatet 198'\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "6204d9dd",
+   "metadata": {
+    "heading_collapsed": true
+   },
+   "source": [
+    "## Oppgave: Yatzy"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "835bd323",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Nedenfor ser du en kodeblokk med allerede skrevet kode og dokumentasjon for en modifisert versjon av Yatzy. Din oppgave er å skrive test(er) til koden, slik at vi er sikre på at koden oppfører seg som forventet. Hvis testene du skriver dine viser at koden ikke oppfører seg som den skal, bes du rette opp koden til testene dine ikke feiler."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5b10abc4",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "\n",
+    "def roll_dice(num_dice):\n",
+    "    \"\"\"Throws num_dice dice and returns a numpy array with all dice values and their counts.\"\"\"\n",
+    "    return np.random.randint(1, 7, size=num_dice)\n",
+    "\n",
+    "def check_highest_pair(dice):\n",
+    "    \"\"\"Checks for the highest pair in dice. \n",
+    "    Returns the score of the highest pair and 0 if no pair is present.\n",
+    "    \"\"\"\n",
+    "    sorted_arr = np.sort(dice)\n",
+    "    pairs = np.zeros(6)\n",
+    "    \n",
+    "    for elem in dice:\n",
+    "        pairs[int(elem) - 1] += 1\n",
+    "    \n",
+    "    if pairs.max() < 2:\n",
+    "        return 0\n",
+    "\n",
+    "    return (np.argwhere(pairs >= 2)[-1][0] + 1) * 2\n",
+    "\n",
+    "def check_highest_two_pair(dice):\n",
+    "    \"\"\"Checks for the highest two pairs in dice. \n",
+    "    Returns the value of of the dice which is in the highest pairs and 0 if no two pairs is present.\n",
+    "    \"\"\"\n",
+    "    first_pair = check_highest_pair(dice)\n",
+    "    second_pair = check_highest_pair(dice[dice != first_pair/2])\n",
+    "    \n",
+    "    if first_pair == 0 and second_pair == 0:\n",
+    "        return 0\n",
+    "    return first_pair + second_pair\n",
+    "\n",
+    "def check_x_of_a_kind(dice, x):\n",
+    "    \"\"\"Checks for x of a kind in dice. x can be either 3, 4 or 5.\n",
+    "    Returns the score of the highest x of a kind or 0 if no x of a kind is present.\n",
+    "    \"\"\"\n",
+    "    \n",
+    "    if x not in [3,4,5]:\n",
+    "        return 0\n",
+    "    \n",
+    "    nums = np.zeros(len(dice))\n",
+    "    unique, counts = np.unique(dice, return_counts=True)\n",
+    "    \n",
+    "    if not any(counts[counts >= x]):\n",
+    "        return 0\n",
+    "   \n",
+    "    return unique[np.where(counts >= x)[0][0]] * x\n",
+    "\n",
+    "def check_yatzy(dice):\n",
+    "    \"\"\"Checks if dice is Yatzy. Yatzy is defined as five of a kind\n",
+    "    Returns 50 if it is Yatzy and 0 otherwise.\n",
+    "    \"\"\"\n",
+    "    return 50 if len(set(dice)) == 0 and len(dice) == 5 else 0\n",
+    "\n",
+    "def check_full_house(dice):\n",
+    "    \"\"\"Checks for full house in dice. \n",
+    "    Returns the score of the the three of a kind or 0 if no full house is present\n",
+    "    \"\"\"\n",
+    "    three_of_a_kind = check_x_of_a_kind(dice, 3)\n",
+    "    pair = check_highest_pair(dice[dice != three_of_a_kind//3])\n",
+    "    \n",
+    "    if not three_of_a_kind or not pair:\n",
+    "        return 0\n",
+    "    \n",
+    "    return pair + three_of_a_kind\n",
+    "\n",
+    "def check_straight(dice, large=False):\n",
+    "    \"\"\"Checks for small or large straight, based on keyword argument large.\n",
+    "    Returns sum of the straight or 0 if no straight is present.\"\"\"\n",
+    "    if not len(dice):\n",
+    "        return 0\n",
+    "    \n",
+    "    if large:\n",
+    "        min_val = 2\n",
+    "        max_val = 6\n",
+    "    else:\n",
+    "        min_val = 1\n",
+    "        max_val = 5\n",
+    "    \n",
+    "    sorted_dice = np.sort(dice)\n",
+    "    if len(sorted_dice) == len(np.unique(sorted_dice)) and sorted_dice[0] == min_val and sorted_dice[-1] == max_val:\n",
+    "        return np.sum(dice)\n",
+    "    return 0\n",
+    "\n",
+    "def check_singles(dice, num):\n",
+    "    \"\"\"Checks for single values.\n",
+    "    Returns the count of the number.\n",
+    "    \"\"\"\n",
+    "    \n",
+    "    return len(dice[dice == num]) * num\n",
+    "\n",
+    "def print_rules():\n",
+    "    print()\n",
+    "    print('You play turn by turn. Each playere must first enter for which category they want to throw the dice.')\n",
+    "    print('The categories are as follows:')\n",
+    "    print()\n",
+    "    print(\"\"\"\n",
+    "    Ones:               Scoring is the sum of all ones\n",
+    "    Twos:               Scoring is the sum of all twos\n",
+    "    Threes:             Scoring is the sum of all threes\n",
+    "    Fours:              Scoring is the sum of all fours\n",
+    "    Fives:              Scoring is the sum of all fives\n",
+    "    Sixes:              Scoring is the sum of all sixes\n",
+    "    Pair:               Roll a pair. Score is the sum of the pair\n",
+    "    Two pair:           Roll two, distinct, pairs. Score is the sum of both pairs\n",
+    "    Three of a kind:    Roll three of a kind. Score is the sum of the three of a kind\n",
+    "    Four of a kind:     Roll four of a kind. Score is the sum of the four of a kind\n",
+    "    Small straight:     1 2 3 4 5. Score is 15\n",
+    "    Large straight:     2 3 4 5 6. Score is 20\n",
+    "    Full house:         Roll one pair and one three of a kind. Score is the sum of all dice\n",
+    "    Yatzy:             Roll all unique dice. Socore is 50\n",
+    "    \"\"\")\n",
+    "    print()\n",
+    "    print('Once a player has a score in a categoy, they cannot choose this category again.')\n",
+    "    print('A player does not have to choose the category \\'Yatzy\\'. The Yatzy is automatically given.')\n",
+    "    print('The game is over once each player have a score in each category.')\n",
+    "    print('In this version of Yatzy, you only have one throw. I.e, you cannot keep dice and throw again.')\n",
+    "\n",
+    "def yes_no(question):\n",
+    "    ans = input(question).lower()\n",
+    "    while ans != 'y' and ans != 'n':\n",
+    "        ans = input(f'Sorry, I did not get that. {question}')\n",
+    "    return ans == 'y'\n",
+    "\n",
+    "def print_status(players, curr_player):\n",
+    "    print()\n",
+    "    print('The scores are as follows:')\n",
+    "    \n",
+    "    for player in players:\n",
+    "        print(f'Player {player} scores:')\n",
+    "        for cat, score in players[player].items():\n",
+    "            print((cat + ':').ljust(25) + str(score))\n",
+    "        \n",
+    "        print(f'Sum scores:'.ljust(25) + str(sum(players[player].values())))\n",
+    "        print()\n",
+    "    \n",
+    "    if curr_player != -1:\n",
+    "        print(f'It is currently player {curr_player}\\'s turn.')\n",
+    "    else:\n",
+    "        winner = max([(player, sum(players[player].values())) for player in players], key=lambda x: x[1])\n",
+    "        \n",
+    "        print(f'The winner is player {winner[0]} with {winner[1]} in score! Congrats.')\n",
+    "        \n",
+    "        \n",
+    "def get_next_player(available_categories, curr_player):\n",
+    "    max_player = max(available_categories.keys())\n",
+    "    \n",
+    "    tmp_curr_player = curr_player + 1\n",
+    "    \n",
+    "    if tmp_curr_player > max_player:\n",
+    "        tmp_curr_player = 1\n",
+    "        \n",
+    "    while not len(available_categories[tmp_curr_player]):\n",
+    "        if tmp_curr_player == max_player:\n",
+    "            return -1\n",
+    "        tmp_curr_player += 1\n",
+    "        \n",
+    "    return tmp_curr_player\n",
+    "                \n",
+    "CATEGORIES = ['Ones', 'Twos', 'Threes', 'Fours', 'Fives', 'Sixes', 'Pair', 'Two pair', 'Three of a kind', 'Four of a kind',\n",
+    "             'Small straight', 'Large straight', 'Full house', 'Yatzy']\n",
+    "\n",
+    "CATEGORY_CHECKS = {\n",
+    "    'Ones': check_singles,\n",
+    "    'Twos': check_singles,\n",
+    "    'Threes': check_singles,\n",
+    "    'Fours': check_singles,\n",
+    "    'Fives': check_singles,\n",
+    "    'Sixes': check_singles,\n",
+    "    'Pair': check_highest_pair,\n",
+    "    'Two pair': check_highest_two_pair,\n",
+    "    'Three of a kind': check_x_of_a_kind,\n",
+    "    'Four_of_a_kind': check_x_of_a_kind,\n",
+    "    'Small straight': check_straight,\n",
+    "    'Large straight': check_straight,\n",
+    "    'Full house': check_full_house,\n",
+    "    'Yatzy': check_yatzy\n",
+    "}\n",
+    "\n",
+    "CONVERSIONS = {\n",
+    "    'Ones': 1,\n",
+    "    'Twos': 2,\n",
+    "    'Threes': 3,\n",
+    "    'Fours': 4,\n",
+    "    'Fives': 5,\n",
+    "    'Sixes': 6,\n",
+    "}\n",
+    "\n",
+    "def read_category(available):\n",
+    "    cat = input('Which category do you want to throw for? ')\n",
+    "    while cat.lower().capitalize() not in available:\n",
+    "        print(f'{cat.lower().capitalize()} is not a valid category. Choose one of: ')\n",
+    "        for i in range(len(available)):\n",
+    "            valid = available[i]\n",
+    "            if i < len(available) - 1:\n",
+    "                print(valid, end = ', ')\n",
+    "            else:\n",
+    "                print(valid + '.\\n')\n",
+    "        cat = input('Which category do you want to throw for? ')\n",
+    "    return cat.capitalize()\n",
+    "\n",
+    "def throw(cat):\n",
+    "    dice = roll_dice(5)\n",
+    "    \n",
+    "    print('Rolling the dice....')\n",
+    "    print()\n",
+    "    print('You rolled:', *dice)\n",
+    "    print()\n",
+    "    if check_yatzy(dice) == 50:\n",
+    "        print('You got Yatzy!! 50 points.')\n",
+    "        return 'Yatze', 50\n",
+    "        \n",
+    "    \n",
+    "    if cat.capitalize() in CONVERSIONS.keys():\n",
+    "        score = CATEGORY_CHECKS[cat](dice, CONVERSIONS[cat])\n",
+    "    elif 'of a kind' in cat.lower():\n",
+    "        if 'four' in cat.lower():\n",
+    "            kind = 4\n",
+    "        else:\n",
+    "            kind = 3\n",
+    "        score = kind * check_x_of_a_kind(dice, kind)\n",
+    "    elif 'straight' in cat:\n",
+    "        if 'Large' in cat.capitalize():\n",
+    "            score = check_straight(dice, large = True)\n",
+    "        else:\n",
+    "            score = check_straight(dice)\n",
+    "    else:\n",
+    "        score = CATEGORY_CHECKS[cat.capitalize()](dice)\n",
+    "    \n",
+    "    print(f'Your score in {cat.capitalize()} was {score}.')\n",
+    "    \n",
+    "    return cat, score\n",
+    "\n",
+    "def main():\n",
+    "    print('Welcome to Yatzy!\\n')\n",
+    "    num_players = int(input('How many people want to play? '))\n",
+    "    \n",
+    "    if num_players == 0:\n",
+    "        print('That\\'s too bad :(\\nBye!')\n",
+    "        return\n",
+    "    \n",
+    "    rules = yes_no('Do you need a refresher of the rules? (y/n) ')\n",
+    "    \n",
+    "    if rules:\n",
+    "        print_rules()\n",
+    "    \n",
+    "    print('\\nLet\\'s play Yatzy!')\n",
+    "    print('############################################################')\n",
+    "    \n",
+    "    players = {}\n",
+    "    \n",
+    "    for player in range(num_players):\n",
+    "        players[player + 1] = {category: 0 for category in CATEGORIES}\n",
+    "    \n",
+    "    available_categories = {player: [cat for cat in CATEGORIES] for player in players.keys()}\n",
+    "    \n",
+    "    playing = any([bool(len(x)) for x in available_categories.values()])\n",
+    "    \n",
+    "    curr_player = 0\n",
+    "    while playing:\n",
+    "        curr_player = get_next_player(available_categories, curr_player)\n",
+    "        last_player = curr_player\n",
+    "        print_status(players, curr_player)\n",
+    "        \n",
+    "        category = read_category(available_categories[curr_player])\n",
+    "        actual_cat, score = throw(category)\n",
+    "        players[curr_player][actual_cat] = score\n",
+    "        available_categories[curr_player].pop(available_categories[curr_player].index(actual_cat))\n",
+    "        \n",
+    "        playing = any([bool(len(x)) for x in available_categories.values()])\n",
+    "    \n",
+    "    print(f'The game is over. The final stats are as follows:')\n",
+    "    print_status(players, curr_player = -1)\n",
+    "    \n",
+    "main()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f0002839",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Meningen med oppgaven er _ikke_ at du skal teste all koden 100%, men at du får en forståelse for nyttigheten og utforming av automatisk testing kontra manuell testing. Det holder derfor å skrive tester til et par av funksjonene i kodeblokken over, gjerne funksjonene som er dokumentert. Når man skriver tester trenger man ikke nødvendigvis å skjønne innholdet i en funksjon heller. Derfor er noen av funksjonene skrevet på måter som ikke nødvendigvis er forelest. Det som er viktig, derimot, er å vite _hva_ funksjonen skal gjøre. Dette har man dokumentasjonen til. Så lenge du _vet_ hva funksjonen _skal_ gjøre, kan du også skrive tester som _foventer_ et resultat av en funksjon. \n",
+    "\n",
+    "***Skriv testene dine i kodeblokken nedenfor***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8c991d7a",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv testene dine her"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Ovinger/Oving7/Generelt om dictionary.ipynb b/Ovinger/Oving7/Generelt om dictionary.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..4b5eaf8d9fac6f216fea2aae3536f3effb1cf801
--- /dev/null
+++ b/Ovinger/Oving7/Generelt om dictionary.ipynb	
@@ -0,0 +1,468 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li class=\"active\"><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Generelt om dictionary\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Dictionary"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Generelt om dictionaries"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "En dictionary er et objekt som lagrer en samling av data, og kan minne mye om en liste. Det som skiller en dictionary fra en liste er at hvert element i en dictionary består av to deler: En nøkkel(a key) og en verdi(a value). En nøkkel peker til en verdi, og man bruker nøkkelen for å hente ut verdien.\n",
+    "\n",
+    "- key: Nøklene kan være flyttall, heltall strenger eller tupler. Nøklene må være unike.\n",
+    "- values: Innholdet som nøkkelen peker til. Dette kan være lister, strenger, heltall, osv.\n",
+    "\n",
+    "For eksempel kan du tenke på en engelsk-norsk ordbok hvor engelske ord er ramset opp i alfabetisk rekkefølge, og til hvert engelske ord finner du en rekke norske alternativer for dette ordet.\n",
+    "\n",
+    "![img](./../../Resources/Images/dictionary_eksempel.png)\n",
+    "\n",
+    "På bildet over er \"Learning\" nøkkelen, mens verdien kan være en liste av de norske alternativene, verdi = \\[bli opplært, innlæring, lærdom etc.\\]. For å få tak i denne verdien (listen med norske oversettelser) må man slå opp på nøkkelen (Learning).\n",
+    "\n",
+    "En dictionary opprettes på to måter\n",
+    "\n",
+    "- dictionary = dict()\n",
+    "- dictionary = {}, til forskjell fra lister er det her krøllparenteser(bracets) og ikke hakeparenteser.\n",
+    "\n",
+    "Et eksempel på bruk av dictionaries er gitt nedenfor:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "telephone_numbers = {'arne': 99748391, 'knut': 74839220, 'siri': [92835674, 65748329]}  # Oppretter en dictionary med tre oppføringer\n",
+    "print(telephone_numbers['knut'])  # Skriver ut knut sitt telefonnummer\n",
+    "print(telephone_numbers['siri'][1])  # Skriver ut det andre telefonnummeret i listen av Siri sine telefonnummer\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her er 'arne' den første nøkkelen, og 99748391 er den tilhørende verdien. 'knut' er den andre nøkkelen og 'siri' er den siste nøkkelen.\n",
+    "\n",
+    "For å legge til et nytt key-value-par i dictionarien kan du gjøre følgende:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "telephone_numbers['stian'] = 82935829  # Legger Stian til i dictionarien\n",
+    "print (telephone_numbers)  # Skriver ut hele telefonlisten"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du skal ha tak i en verdi, må du slå opp på nøkkelen. La oss si at du ønsker å vite nummeret til arne, da må du skrive følgende:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "telephone_numbers['arne']"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "# a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "***Opprett en tom dictionary my_family i kodeblokken under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "# b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon `add_family_member(role, name)` som tar inn to strenger, `rolle`(key) og `navn`(value), og legger familiemedlemmet til i dictionaryen `my_family`.\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å teste koden din kan du kjøre kodeblokken under. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "add_family_member('bror', 'Arne')\n",
+    "print (my_family)\n",
+    "add_family_member('far', 'Bob Bernt')\n",
+    "print (my_family)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du har gjort alt riktig skal output fra blokken over bli:\n",
+    "```\n",
+    "{'bror': 'Arne'}\n",
+    "{'bror': 'Arne', 'far': 'Bob Bernt'}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "# c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du ønsker å legge til flere familiemedlemmer med samme rolle (f.eks. to brødre), må du lage en liste som inneholder alle dine brødre.\n",
+    "\n",
+    "Når du har gjort dette kan du bruke vanlige liste-metoder som .append() og .pop() for å legge til eller fjerne elementer fra listen.\n",
+    "\n",
+    "*NÃ¥ skal du utvide funksjonaliteten fra b) slik at du kan legge til flere familiemedlemmer med samme rolle.*\n",
+    "\n",
+    "\n",
+    "**Hint:** \n",
+    "- Du må ha en liste med navn for hver rolle.\n",
+    "\n",
+    "- For å sjekke om en rolle finnes fra før av kan du bruke \"if key in dict\". Du kan også løse dette med unntakshåndtering.\n",
+    "\n",
+    "***Kopier koden din fra oppgave b) til kodeblokken under og utvid programmet til å støtte flere familiemedlemmer med samme rolle***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å teste koden kan du kjøre kodeblokken under"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_family={}\n",
+    "add_family_member('bror', 'Arne')\n",
+    "add_family_member('mor', 'Anne')\n",
+    "add_family_member('bror', 'Geir')\n",
+    "print (my_family)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du har gjort alt riktig skal output fra denne bli:\n",
+    "```\n",
+    "{'mor': ['Anne'], 'bror': ['Arne', 'Geir']}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "# d) (frivillig)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "*(Du trenger ikke gjøre denne for å få godkjent oppgaven)* ***Skriv ut den ferdige dictionarien på et fint format med kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Du kan bruke en for-løkke med syntaksen for key, value in my_family.items(): for å iterere gjennom dictionarien. "
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Generelt om filbehandling.ipynb b/Ovinger/Oving7/Generelt om filbehandling.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..5ada50c89e3acb47e4b36dde2d1d300e65861fe9
--- /dev/null
+++ b/Ovinger/Oving7/Generelt om filbehandling.ipynb	
@@ -0,0 +1,565 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li class = \"active\"><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Generelt om filbehandling\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Filbehandling\n",
+    "- Betingelser\n",
+    "- Løkker\n",
+    "\n",
+    "I denne oppgaven skal vi skrive til en fil og lese fra en fil."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Generelt om filer\n",
+    "Det kan være lurt å lese dette før du går videre"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Det er ofte nyttig å kunne lagre data til en fil, eller lese data fra en fil når man skriver et program i Python. De mest brukte funksjonene er for åpning, redigering og lukking av eksterne filer. \n",
+    "\n",
+    "Når du åpner filen må du spesifisere hvordan du skal bruke filen. Det er derfor viktig å åpne filen på riktig måte. Måten dette gjøres på er som inn-parameter i `open()`-funksjonen, noen eksempler er:\n",
+    "\n",
+    "- **'r'** - for lesing av filen (default)\n",
+    "- **'w'** - for skriving til filen\n",
+    "- **'a'** - for å legge til data (**a**ppend) til den eksisterende filen\n",
+    "\n",
+    "I denne oppgaven skal vi bli bedre kjent med hvordan dette fungerer:\n",
+    "\n",
+    "- For å åpne en fil i Python kan vi skrive: `f = open('filename', Bruksmåte)`. Bruksmåte er enten `'r'`, `'w'` eller `'a'` avhengig av hva hvordan filen skal brukes.\n",
+    "- For å lese data fra en fil kan vi bruke: `innhold = f.read()`\n",
+    "- For å legge til data til en fil kan vi skrive: `f.write(data)`\n",
+    "\n",
+    "Filer lukkes på følgende måte: `f.close()`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### Lesing av fil"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Eksempelet under viser lesing av en fil. **Kjør koden under og test det ut da vel!**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Dette er en eksempelfil.\n",
+      "\n",
+      "Her kan man skrive hva man vil.\n",
+      "\n",
+      "Men helst ikke for mange hatefulle ytringer.\n"
+     ]
+    }
+   ],
+   "source": [
+    "# LESING AV FIL\n",
+    "f = open('example_file1.txt','r') #r spesifiserer at man skal lese fra en fil\n",
+    "innhold = f.read()\n",
+    "print(innhold)\n",
+    "f.close()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Når man leser en fil slik som over, må man lagre innholdet i en variabel (her bruker vi `innhold`). **Husk alltid å lukke filen!**\n",
+    "\n",
+    "Den filen som ble lest fra finner dere her: [example_file1.txt](../../../../edit/nbgitpuller_test/Ovinger/Oving9/example_file1.txt). Prøv å endre på filen, lagre den med `file -> save` i toppmenyen for så å kjøre kodeblokken over på nytt. Kodeblokken burde da skrive ut det nye innholdet i filen!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### Skriving av fil"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å skrive til en fil kan man gjøre slik som under. **Kjør koden under og test!**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "f = open('example_file1.txt','w')  #w spesifiserer at filen skal skrives til\n",
+    "f.write('En hatefull ytring')\n",
+    "f.close()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Etter at du har kjørt koden over vil du kunne se at innholdet i [example_file1.txt](../../../../edit/nbgitpuller_test/Ovinger/Oving9/example_file1.txt) har endret seg. Hvis du vil kan du bytte ut `'w'` over med `'a'` og se hva som da skjer."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Context managers"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Det er generelt foretrukket i python å bruke _context managers_ når man gjør operasjoner som å skrive til og lese fra fil. De tar hånd om lukking av fila når du er ferdig, og passer på å lukke også dersom koden crasher underveis i en operasjon. Da kan vi være trygge på at vi ikke får korrupte filer.\n",
+    "\n",
+    "Åpning og lukking av filer med context managere gjøres som følger"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "En hyggelig kommentar\n"
+     ]
+    }
+   ],
+   "source": [
+    "with open('example_file.txt', 'w') as writefile:\n",
+    "    writefile.write(\"En hyggelig kommentar\")\n",
+    "\n",
+    "with open('example_file.txt', 'r') as readfile:\n",
+    "    innhold = readfile.read()\n",
+    "    print(innhold)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Man kan også åpne og lukke flere filer i gangen"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "En hyggelig kommentar\n",
+      "---\n",
+      "Dette er en eksempelfil.\n",
+      "\n",
+      "Her kan man skrive hva man vil.\n",
+      "\n",
+      "Men helst ikke for mange hatefulle ytringer.\n"
+     ]
+    }
+   ],
+   "source": [
+    "with open('example_file.txt', 'r') as file_0, open('example_file1.txt', 'r') as file_1:\n",
+    "    innhold_0 = file_0.read()\n",
+    "    innhold_1 = file_1.read()\n",
+    "    print(innhold_0, innhold_1, sep=\"\\n---\\n\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon `write_to_file(data)` som tar inn strengen `data` og legger denne inn i en fil **my_file.txt**\n",
+    "\n",
+    "***Skriv din kode i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du lurer på om du gjorde riktig kan du kalle på funksjonen og sjekke innholdet i filen her:\n",
+    "[my_file.txt](my_file.txt)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her skal du skrive til fil og må derfor benytte deg av\n",
+    "\n",
+    "```python\n",
+    "f = open('my_file.txt', 'w')\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon `read_from_file(filename)` som tar inn strengen `filename` med filnavnet og skriver ut innholdet.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Du kan teste ut funksjonen ved å kalle den med `'my_file.txt'` som argument."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her skal du lese fra fil og må derfor benytte deg av\n",
+    "```python\n",
+    "f = open('my_file.txt', 'r')\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon `main()` hvor bruker får valget mellom å skrive til fil eller lese fra fil. Funksjonen skal kjøre så lenge brukeren ikke svarer `'done'`. (Se eksempelkjøring)\n",
+    "\n",
+    "- Hvis brukeren velger **write** skal du bruke **a)** til å skrive data til **my_file.txt**\n",
+    "- Hvis brukeren velger **read** skal du skrive ut innholdet (dersom det er noe) i **my_file.txt** vha. **b)**\n",
+    "\n",
+    "**Eksempel på kjøring:**\n",
+    "```\n",
+    "Do you want to read or write? write\n",
+    "What do you want to write to file? hei allan\n",
+    "hei allan was written to file.\n",
+    "Do you want to read or write? read\n",
+    "hei allan\n",
+    "Do you want to read or write? done\n",
+    "You are done.\n",
+    "```\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Du kan når som helst sjekke innholdet i [my_file.txt](my_file.txt)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.10 64-bit (microsoft store)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "84613ed7f399af20e1e2ef8af506be689ae865345b9dceeaa3cba33ce1bef069"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Generelt om sets.ipynb b/Ovinger/Oving7/Generelt om sets.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..4076b366cfcb8164c613a1eaa99fc54d8046a918
--- /dev/null
+++ b/Ovinger/Oving7/Generelt om sets.ipynb	
@@ -0,0 +1,827 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li class = \"active\"><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Generelt om sets\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Sets\n",
+    "- Lister"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Generelt om sets\n",
+    "Det kan være lurt å lese gjennom dette før du går videre"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Et set inneholder en samling av unike verdier og fungerer på samme måte som et set i matematikken. Forskjellen på et set og en liste er at en liste kan inneholde flere like elementer, for eksempel:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "liste = [1,2,3,1,2,3]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Altså kan vi finne alle tallene to ganger. Dette går ikke i et set ettersom alle elementene i et set er ulike. Tilsvarende set ser slik ut:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_set = set([1,2,3])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "På samme måte som vi kunne opprette en dictionary ved å skrive `my_dict = dict()`, kan vi opprette et set ved å skrive:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_set = set()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å legge til et element i et set kan vi benytte oss av `add()`. **Husk å kjøre koden over før du kjører koden under**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_set.add(1)\n",
+    "my_set.add(2)\n",
+    "my_set.add(3)\n",
+    "my_set.add(3)\n",
+    "my_set.add(3)\n",
+    "print(my_set)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å legge til flere elementer på samme gang, kan `update()` benyttes."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å fjerne et element kan vi benytte oss av `remove()` eller `discard()`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_set.remove(2)\n",
+    "print(my_set)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "De fleste ting fungerer likt mellom sets og lister, og her er noen eksempler:\n",
+    "- iterering gjennom setet/listen\n",
+    "- sjekke om et element er i setet/listen\n",
+    "- finne lengden til setet/listen"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du har hatt sannsynlighet er du kanskje godt kjent med venndiagram. Da har du sikkert hørt om union og snitt. Dersom vi har to sets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "set1 = set([1,2,3,4,5,6,7,8])\n",
+    "set2 = set([0,2,4,6,8,10,12])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "kan vi se at begge setene inneholder 2, 4, 6 og 8. Dette er det som kalles intersection, eller snitt. PÃ¥ figuren under kan vi se at snittet er det feltet hvor sirklene overlapper.\n",
+    "\n",
+    "![img](./../../Resources/Images/Set-eksempel.png)\n",
+    "\n",
+    "For å finne snittet av set1 og set2 kan vi skrive som under. **Kjør kun koden under dersom du har kjørt forrige kodeblokk som initialiserer set1 og set2**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "set3 = set1.intersection(set2)\n",
+    "set3 = set2.intersection(set1)\n",
+    "set3 = set1&set2\n",
+    "print(set3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Alle de tre første linjene i kodeblokken over er ekvivalente.\n",
+    "\n",
+    "Union er et annet nyttig ord, og det vil si tallene som enten er i set1 eller set2 eller begge, dvs. alle tallene som er med. For å finne unionen av set1 og set2 kan vi skrive:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "set3 = set1.union(set2)\n",
+    "set3 = set2.union(set1)\n",
+    "set3 = set1 | set2\n",
+    "print(set3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her gjør også alle de tre øverste kodelinjene akkurat det samme."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Tallene som er i set1, men ikke i set2, dvs. 1, 3, 5 og 7 kan vi finne ved å skrive"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "set3 = set1.difference(set2)\n",
+    "set3 = set1-set2 # denne linja og linja over gjør akkurat det samme\n",
+    "print(set3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å finne elementene som er i set2 men ikke set1 er det bare å bytte om på set1 og set2 i koden over."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Symmetric difference vil si alle tallene som er i set1 eller set2 (dvs. unionen) minus snittet (tallene som er i begge setene). I dette tilfelle er det 0,1,3,5,7,10 og 12.\n",
+    "\n",
+    "Dette finner vi slik:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "set3 = set1.symmetric_difference(set2)\n",
+    "set3 = set2.symmetric_difference(set1)\n",
+    "set3 = set1^set2               #set3 = (0,1,3,5,7,10,12)\n",
+    "print(set3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her gjør også de tre første linjene akkurat det samme."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag et tomt set som heter `my_set`, legg til alle oddetallene opp til 20 i setet ved å bruke en for-løkke og print setet\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Har du gjort det riktig skal output være\n",
+    "```\n",
+    "{1, 3, 5, 7, 9, 11, 13, 15, 17, 19}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag et nytt set som heter `my_set2` og inneholder alle oddetallene frem til 10.\n",
+    "\n",
+    "***Skriv din koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Har du gjort det riktig skal kodeblokken under printe `{1, 3, 5, 7, 9}`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(my_set2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag et setet `my_set3` som inneholder alle tallene som er i setet fra a) men ikke i setet fra b) \n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Har du gjort det riktig skal kodeblokken under printe `{11, 13, 15, 17, 19}`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(my_set3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## d)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du tar snittet av setet fra b) og setet fra c), hva forventer du å få da? Hva med a) og c)?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "**Svar:**<dobbeltklikk her\\>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## e)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Bruk de innebygde funksjonene `len()` og `set()` til å lage en funksjon `allUnique(lst)`, som returnerer `True` om listen `lst` inneholder unike elementer og ellers returnerer `False`.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Har du gjort det riktig kan du teste med koden under (etter å ha kjørt din egen kodeblokk)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(allUnique([1,3,2,6,8]))\n",
+    "print(allUnique([1,3,5,2,3,7]))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Output fra denne burde være:\n",
+    "```python\n",
+    "True\n",
+    "False\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## f)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Bruk de innebygde funksjonene `list()` og `set()` til å lage en funksjon `removeDuplicates(lst)`, som fjerner duplikater fra listen `lst` og returner den modifiserte listen.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Du kan teste koden din med koden under (etter å ha kjørt din egen kodeblokk)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(removeDuplicates([1,3,5,2,3,7]))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Har du gjort alt riktig skal output fra denne være:\n",
+    "```python\n",
+    "[1, 2, 3, 5, 7]\n",
+    "```"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Innebygde funksjoner i dictionaries.ipynb b/Ovinger/Oving7/Innebygde funksjoner i dictionaries.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..72586c62531db11fd2f2b3edc624c3f10b7a50ea
--- /dev/null
+++ b/Ovinger/Oving7/Innebygde funksjoner i dictionaries.ipynb	
@@ -0,0 +1,664 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li class = \"active\"><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Innebygde funksjoner i dictionaries\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Dictionaries\n",
+    "- Innebygde funksjoner"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Info om innebygde innebygde funksjoner\n",
+    "\n",
+    "Det kan være lurt å lese gjennom dette før du går videre"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Akkurat som at det eksisterer mange innebygde funksjoner for lister, eksisterer det også mange innebygde funksjoner for dictionaries. Fra øving 6 husker du kanskje at du ble introdusert for len() som returnerer lengden til en liste, dvs. antall elementer i listen. Denne funksjonen kan også benyttes på dictionaries. Kjør kodeblokken under og se hva som skjer."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "dictionary = {}\n",
+    "dictionary['red'] = 'primærfarge'\n",
+    "num_items = len(dictionary) \n",
+    "print(num_items)\n",
+    "dictionary['blue'] = 'primærfarge'\n",
+    "dictionary['green'] = 'sekunærfarge'\n",
+    "num_items2 = len(dictionary)\n",
+    "print(num_items2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du prøver å få tak i en verdi fra en nøkkel som ikke er lagt inn, vil du få en feilmelding. For å hindre dette kan det være lurt å sjekke om nøkkelen er i dictionaryen."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "if 'yellow' in dictionary:\n",
+    "    print(dictionary['yellow'])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Som du ser skjer det ingenting når man kjører koden over. Dette er fordi 'yellow' ikke finnes i dictionaryen. Hvis du vil kan du prøve å fjerne if-setningen og se hva som da skjer.\n",
+    "\n",
+    "Man kan også fjerne elementer ganske greit i en dictionary, ved bruk av del og pop() som under:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "if 'green' in dictionary:\n",
+    "    del dictionary['green']  # green: sekundærfarge blir nå slettet fra dictionaryen\n",
+    "print(dictionary.pop('blue', 'Entry not found'))  # blue: primærfarge blir nå slettet fra dictionaryen og primærfarge returneres."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "'Entry not found' er her en default-verdi som blir returnert dersom nøkkelen 'blue' ikke finnes i dictionaryen. Hvis du kjører kodeblokken over to ganger vil du se at 'Entry not found' blir printet den andre gangen. \n",
+    "\n",
+    "Dersom det er ønskelig å tømme hele dictionaryen kan en bruke `dictionary.clear()`."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Ettersom en dictionary består av elementer som inneholder både en nøkkel og en verdi, er det litt mer avansert å iterere gjennom en dictionary enn en liste.\n",
+    "\n",
+    "La oss tenke oss at vi har følgende dictionary:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "my_family={'bror': 'Martin', 'søster': 'Helene', 'mor': 'Anne', 'far': 'Bob Bernt', 'hund': 'Lovise'}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du ønsker å iterere gjennom alle nøklene i dictionaryen, dvs. 'bror', 'søster', 'mor', 'far' og 'hund' kan du skrive for-løkken som under. **Kjør bare koden under dersom du har kjørt koden over først.**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "for key in my_family:\n",
+    "    print(key)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dersom du ønsker å skrive ut alle nøklene samt navnene til familiemedlemmene kan du skrive:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "for key in my_family:\n",
+    "    print(key, my_family[key])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "En annen måte å få denne utskriften på, altså en iterering som itererer gjennom både verdier og nøkler samtidig, er ved å bruke følgende format:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "for key, value in my_family.items():\n",
+    "    print(key, value)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "`items()` returnerer alle nøklene i en dictionary samt deres tilhørende verdier.\n",
+    "\n",
+    "Dersom det hadde vært ønskelig å kun printe ut verdiene, dvs. navnene, kunne man benyttet seg av `values()`:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "for val in my_family.values():\n",
+    "    print(val)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Gitt følgende dictionary:\n",
+    "\n",
+    "```python\n",
+    "scores = {'Amanda': [88, 92, 100], 'Kennet': [30, 45, 50], 'Einstein': [100,100,100]}\n",
+    "```\n",
+    "\n",
+    "1. hva skrives ut dersom vi skriver `print(scores['Amanda'])`\n",
+    "2. hva skrives ut dersom vi skriver `print(scores['Amanda'][2])`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "**Ditt svar:** <her\\>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Opprett en tom dictionary som kalles fruit, for så å legge til tre frukter du liker som nøkler, og antall frukt av denne typen du pleier å spise hver dag som verdi.\n",
+    "\n",
+    "**Eksempel**\n",
+    "```python\n",
+    "fruit = {'epler': 2, 'pærer': 3, 'appelsiner': 1}\n",
+    "```\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Legg til to frukter som du misliker og fjern de tre fruktene du liker. Benytt deg av de innebygde funksjonene `del` og `dict[key]=value`.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## d)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Skriv ut begge verdiene (antall frukt du spiser hver dag som du misliker) i dictionaryen.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Eksempel på kjøring dersom `fruit = {'bananer': 0, 'druer': 1}`:\n",
+    "```\n",
+    "0\n",
+    "1\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## e)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Sjekk om 'bananer' er i dictionaryen, og fjern 'bananer' fra dictionaryen dersom den er oppført.\n",
+    "\n",
+    "***Skriv koden din på angitt plass i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "fruit = {'bananer': 0, 'druer': 1}\n",
+    "print(fruit)\n",
+    "#DIN KODE HER\n",
+    "print(fruit)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du har gjort alt riktig skal output fra koden over være:\n",
+    "```\n",
+    "{'bananer': 0, 'druer': 1}\n",
+    "{'druer': 1}\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## f)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Legg til et par bær som du liker i dictionaryen og skriv ut både verdiene og nøklene i dictionaryen på et greit format.\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**Eksempel på utskrift:**\n",
+    "```\n",
+    "epler 2\n",
+    "pærer 0\n",
+    "jordbær 10\n",
+    "blåbær 50\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Benytt deg av for key, value in fruit.items()."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Moduler.ipynb b/Ovinger/Oving7/Moduler.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..054115d509864bd1aefbbd9b6e2ab0bf5544f3aa
--- /dev/null
+++ b/Ovinger/Oving7/Moduler.ipynb
@@ -0,0 +1,410 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "6b270412",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li class = \"active\"><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "\n",
+    "# Moduler\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "* Importere moduler\n",
+    "* Lage egne moduler"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "56b78311",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I denne oppgaven skal du lære hvordan du importerer, bruker og lager egne moduler."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5d318b82",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Tutorial: Moduler\n",
+    "Les gjerne denne før du setter i gang med oppgaven."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0b5edc4f",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Moduler i Python er ekstern kode som kan importeres inn i din egen kode. Du er allerede vant med å bruke det _eksterne_ biblioteket **numpy**, som er en slik modul. **Numpy** er en såkalt _open source_ modul med over 1300 bidragsytere. All koden til **numpy** biblioteket kan sees [her](https://github.com/numpy/numpy). Som sagt er **numpy** en ektern modul, og vi må installere den før vi kan bruke den. Det finnes også innebygde moduler i Python, som f.eks math-modulen. Denne er faktisk skrevet i programmeringsspråket C, og kan sees [her](https://github.com/python/cpython/blob/main/Modules/mathmodule.c). Denne trenger vi ikke installere før vi kan bruke den, da den er inkludert i Python installasjonen vår. Kodeblokken under gir deg en liten refresher på hvordan du importerer og bruker moduler og funksjoner fra moduler:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f8a8cec1",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "import math # Importerer hele math modulen\n",
+    "import numpy as np # Importerer numpy modulen og kaller den for np, slik at vi slipper å skrive numpy hver gang vi skal bruke den\n",
+    "from itertools import permutations # Importerer bare én funksjon fra modulen itertools\n",
+    "\n",
+    "print(math.ceil(1.4)) # Bruker ceil-funksjonen i math modulen\n",
+    "print(np.ceil(1.4)) # Bruker ceil-funksjonen i numpy modulen\n",
+    "\n",
+    "l = [1, 2, 3, 4]\n",
+    "print(list(permutations(l, 2))) # Bruker permutations funksjonen fra itertools modulen"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1d64ea9c",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Å importere moduler gjør at vi slipper å ha all koden vi bruker i vår egen kode. Tenk bare hvor mye kode og rot det hadde blitt om vi måtte inkludere all **Numpy**-koden i vår egen kode hver gang vi skulle brukt den!\n",
+    "\n",
+    "Vi kan lett lage våre egne moduler også. Dette er veldig nyttig når vi skirver større programmer og ikke ønsker gigantiske filer hvor all koden står i én fil. Kanskje vil du separere ut kode som bare skal være hjelpefunksjoner, slik som en funskjon som skal finne gjennomsnitt, eller du vil dele opp koden din slik at hver fil omhandler ét tema. Tenk deg at du skal lage et program som skal plotte mange forskjellige matematiske funksjoner. Da kan det være fint å ha alle de matematiske funksjonene i én fil, og logikken og funksjonene for plotting i en annen. Da blir koden mer ryddig og lesbar.\n",
+    "\n",
+    "Moduler vi skriver selv er helt vanlige **.py**-filer som inneholder Python kode. Vi har laget en modul til denne øvingen, som kan sees [her](./functions.py). Moduler du lager på egenhånd importeres og brukes akkurat som andre moduler."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "66185ce1",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Tutorial: Lage egne moduler i JupyterLab\n",
+    "Les gjerne denne før du setter i gang med oppgaven"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "34b43007",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvordan du lager egne moduler i JupyterLab er ganske likt slik du ville gjort det i en IDE. Her er en step-by-step guide for hvordan du kan lage din egen modul i JupyterLab:\n",
+    "\n",
+    "1. Pass på at du er i samme mappe som øvings-notebooken i mappesystemet til Jupyter.\n",
+    "2. Klikk på \"File\" -> \"New\" -> \"Python File\"  (øverst til venstre)\n",
+    "3. Nå ble det laget en ny Python-fil med navn \"untitled.py\". Høyreklikk på denne i filutforskerern, velg \"rename\", og skriv inn ønsket navn på filen (modulen)\n",
+    "4. Skriv koden din i python-filen (kan f.eks. definere flere funksjoner)\n",
+    "5. Nå er modulen klar. Den kan nå importeres av notebooks (eller andre Python-filer) i samme mappe.\n",
+    "\n",
+    "Hvis navnet på filen din er `modul.py`, og har en funksjon som heter `foo`, kan den importeres og brukes slik:\n",
+    "\n",
+    "```python\n",
+    "import modul\n",
+    "\n",
+    "modul.foo()\n",
+    "\n",
+    "```\n",
+    "\n",
+    "Hvis du ønsker å bruke et alias for modulen, slik vi ofte gjør med numpy (np), kan det gjøres slik:\n",
+    "\n",
+    "```python\n",
+    "import modul as m\n",
+    "\n",
+    "m.foo()\n",
+    "\n",
+    "```\n",
+    "Her er `m` alias for `modul`. Du kan velge navn på alias helt selv."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "cce1529e",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "0145d7b8",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Vi har laget en modul som du skal bruke i denne oppgaven. Modulen heter `min_modul` og inneholder en ny datatype som vi har skrevet selv, kalt `Stack`. En `Stack` er ikke en ukjent datatype, og er en standard datatype i andre programmeringsspråk. Python, derimot, har ikke denne innebygd, derfor må vi lage den selv slik at vi kan bruke den. Du kan se koden [her](./min_modul.py). Oppførselen til en `Stack` er beskrevet nedenfor:\n",
+    "\n",
+    "* En Stack er en type liste, men vi kan kun hente ut første element. Hvert element som blir lagt til i listen, blir lagt til som første element i Stacken.\n",
+    "* `s = Stack(*args)` oppretter en ny Stack\n",
+    "* `s.push(elem)` pusher `elem` inn på Stacken\n",
+    "* `s.peek()` lar oss se hva det første elementet i Stacken er\n",
+    "* `s.pop()` fjerner det første elementet fra Stacken og returnerer det til oss\n",
+    "* `s.is_empty()` returnerer `True` dersom Stacken er tom og `False` om den har elementer\n",
+    "* `s.clear()` fjerner alle elementene i Stacken\n",
+    "\n",
+    "```python\n",
+    ">>> s = Stack(5, 4, 3, 2, 1)\n",
+    ">>> s\n",
+    "[5, 4, 3, 2, 1]\n",
+    ">>> s.peek()\n",
+    "5\n",
+    ">>> s.pop()\n",
+    "5\n",
+    ">>> s\n",
+    "[4, 3, 2, 1]\n",
+    ">>> s.push(10)\n",
+    ">>> s\n",
+    "[10, 4, 3, 2, 1]\n",
+    ">>> s.is_empty()\n",
+    "False\n",
+    ">>> s.clear()\n",
+    ">>> s.is_empty()\n",
+    "True\n",
+    "```\n",
+    "\n",
+    "I denne oppgaven skal du bruke datatypen `Stack` som defniert i `min_modul`. Altså skal du importere modulen og bruke datatypen definert der. Du skal også lage en funksjon `convert(n, b)` som konverterer tallet `n` i base 10 til base `b`, ved hjelp av en `Stack`. Algoritmen for `convert` er beskrevet nedenfor:\n",
+    "\n",
+    "1. Del `n` på `b`\n",
+    "2. Lagre kvotienten og resten i to variabler `k` og `r`\n",
+    "3. La `k = n` og fortsett steg 1 og 2 til `k = 0`\n",
+    "4. Når `k = 0` er det konverterte tallet alle rest-verdiene du har funnet, i reversert rekkefølge.\n",
+    "\n",
+    "Eksempel på å konvertere `50` i base 10 til base 2:\n",
+    "\n",
+    "```\n",
+    "50 / 2 = 25 * 2 + 0\n",
+    "25 / 2 = 12 * 2 + 1\n",
+    "12 / 2 = 6 * 2 + 0\n",
+    "6 / 2 = 3 * 2 + 0\n",
+    "3 / 2 = 1 * 2 + 1\n",
+    "1 / 2 = 0 * 1 + 1\n",
+    "\n",
+    "50b10 == 110010b2\n",
+    "```\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f8662ac5",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b863fcb3",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Hvis du har skrevet funksjonen rett, skal kodeblokken under gi følgende output:\n",
+    "\n",
+    "```python\n",
+    "[1, 1, 0, 0, 1, 0]\n",
+    "[1, 3, 2, 4, 3]\n",
+    "[1, 1]\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "38025941",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "print(convert(50, 2))\n",
+    "print(convert(1073, 5))\n",
+    "print(convert(4, 3))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "5a32c9dc",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8368382f",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I denne oppgaven skal du lage din egen modul. Denne trenger _ikke_ være en ny datatype slik som i oppgave a). Du står fritt til å lage en modul du selv ønsker. Dette kan være enkle funksjoner eller konstanter, eller mer avansert som i forrige oppgave. Eneste krav til denne oppgaven er at du importerer og bruker modulen din på forskjellige måter i koden her. \n",
+    "\n",
+    "Lag din egen modul og importer forskjellige funksjoner/konstanter på forskjellige måter.\n",
+    "\n",
+    "***Skriv koden din i kodeblokkene under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "4241bc94",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Importer hele modulen her, uten å gi den noe navn. Kjør litt kode fra modulen"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c479a934",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Importer hele modulen her, og gi den et navn. Kjør litt kode fra modulen"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "abf7a713",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Importer bare én funksjon/konstant fra modulen her. Kjør kode som bruker funksjonen/konstanten"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.7 ('tdt4195')",
+   "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.9.7"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "63b89d9bfc14eb4486c27c9b239bf0a08c4c63a21c176f83036370f0e204c130"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Ovinger/Oving7/Opptaksgrenser.ipynb b/Ovinger/Oving7/Opptaksgrenser.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..bc76b5d17630abdad5f155780065db731f839f8c
--- /dev/null
+++ b/Ovinger/Oving7/Opptaksgrenser.ipynb
@@ -0,0 +1,343 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li class = \"active\"><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "\n",
+    "# Opptaksgrenser\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "* Lese fra filer\n",
+    "* dictionaries\n",
+    "\n",
+    "I denne oppgaven skal vi lese inn en fil med opptaksgrensene fra Samordna Opptak.\n",
+    "\n",
+    "Filen er på CSV-format (Comma Separated Values), noe som betyr at hver linje er en liste med felter separert med komma. Tekstfelter er omsluttet av fnutter (\").\n",
+    "\n",
+    "* Første felt er studiets navn\n",
+    "* Andre felt er poenggrensen (enten et tall, eller \"Alle\" dersom alle kom inn)\n",
+    "\n",
+    "F.eks. linjen: **\"NTNU 194459 Antikkens kultur\",\"Alle\"** sier at alle som søkte kom inn på Dragvoll-studiet “Antikkens kultur” ved NTNU.\n",
+    "\n",
+    "Hver funksjon i de følgende deloppgavene tar data fra filen **poenggrenser_2011.csv** som input. Derfor er det veldig praktisk å lagre innholdet i en variabel, slik at du slipper å lese den på nytt hver gang."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Les fra fila `poenggrenser_2011.csv` og lagre innholdet i en variabel.\n",
+    "\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Skriv en funksjon som finner ut hvor mange studier som tok inn alle søkere. \n",
+    "\n",
+    "***Husk at du nå i alle deloppgavene kan bruke variabelen du definerte i a så lenge du har kjørt den kodesnutten først!***\n",
+    "\n",
+    "*Eksempel på kjøring av kode:*\n",
+    "```python\n",
+    "Antall studier hvor alle kom inn: 590\n",
+    "```\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Skriv en funksjon som finner gjennomsnittlig opptaksgrense for NTNU. Ikke ta med studier som tok inn alle søkere.\n",
+    "\n",
+    "*Eksempel på kjøring av kode:*\n",
+    "```python\n",
+    "Gjennomsnittlig opptaksgrense for NTNU var: 46.29\n",
+    "```\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "For å sjekke om studiet var på NTNU kan du hente ut de fire første bokstavene i hver linje. Hvis du har en string studie kan du gjøre dette ved å skrive: studie[1:5]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Skriv en funksjon som finner studiet med laveste opptaksgrense (som IKKE tok inn alle søkere).\n",
+    "\n",
+    "*Eksempel på kjøring av kode:*\n",
+    "```python\n",
+    "Studiet som hadde den laveste opptaksgrensen var: AHO 189343 Industridesign\n",
+    "```\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### d)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en dictionary som har studiestedet som nøkkel og en liste med dictionaries som verdi. Denne listen med dictionaries skal ha navnet på linjen som nøkkel og opptakspoengene til den tilsvarende linjen som verdi. Dersom en linje har navnet \"Fysikk og Matematikk\" trenger du kun å ta hensyn til det første ordet, dvs. \"Fysikk\". \n",
+    "\n",
+    "**Eksempel på utskrift:**\n",
+    "\n",
+    "```python\n",
+    "ATH [{'Kristendom': ' Alle'}, {'Interkulturell': ' Alle'}, {'Musikk': ' Alle'}, {'Teologi': ' Alle'}, {'Kristendom': ' Alle'}, {'Psykologi': ' Alle'}, {'Musikk': ' Alle'}, {'Interkulturell': ' Alle'}, {'Psykologi': ' Alle'}, {'Praktisk': ' Alle'}]\n",
+    "AHO [{'Arkitekt': '12.3'}, {'Industridesign': '11.7'}]\n",
+    "BDH [{'Sykepleierutdanning': '45.5'}]\n",
+    "MF [{'Kristendom/RLE': ' Alle'}, {'Samfunnsfag': ' Alle'}, {'Interkulturell': ' Alle'}, {'Teologi': ' Alle'}, {'Religion': ' Alle'}, {'Ungdom': ' Alle'}, {'Lektor-': ' Alle'}, {'Teologi': ' Alle'}]\n",
+    "DHS [{'Sykepleierutdanning': '48.3'}, {'Vernepleierutdanning': '41.8'}, {'Sosialt': '49.1'}, {'Sosialt': '42.4'}, {'Ergoterapeututdanning': '32.6'}]\n",
+    "DMMH [{'Førskolelærerutdanning': '36.3'}, {'Førskolelærer': '39.1'}, {'Førskolelærer': '44'}, {'Førskolelærer': '46.2'}, {'Førskolelærer': ' Alle'}]\n",
+    ".\n",
+    ".\n",
+    ".\n",
+    "UIT [{'Ingeniør': ' Alle'}, {'Ingeniør': ' Alle'}, {'Ingeniør': ' Alle'}, {'Ingeniør': ' Alle'}, {'Sykepleierutdanning': '43.8'}, {'Lærerutdanning': ' Alle'}, {'Lærerutdanning': ' Alle'}, {'Førskolelærerutdanning': ' Alle'}, ....\n",
+    "```\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Osteviruset.ipynb b/Ovinger/Oving7/Osteviruset.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b0bba176259da69f3d05a271d41caebe192e90cb
--- /dev/null
+++ b/Ovinger/Oving7/Osteviruset.ipynb
@@ -0,0 +1,267 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li class = \"active\"><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "\n",
+    "# Osteviruset\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Dictionary\n",
+    "\n",
+    "Ostelageret til Tine benytter et smart system som mapper oster med lagerhylleplass. Ostene er indeksert på navn, og hver type ost er mappet til en tuple med hylleplasser hvor nøyaktig én ost av denne typen befinner seg. Kodesnutt viser en liten bit av Tine sin ostedatabase i form av en dictionary. \n",
+    "\n",
+    "Indeksering av dictionaries er ganske likt indeksering av lister. Den største forskjellen er at indekser (nøkler) kan i tillegg til tall, også være andre datatyper. I denne oppgaven er nøklene strenger. \n",
+    "\n",
+    "Merk: I denne oppgaven trenger du ikke lage noen ekstra funksjoner. Bruk gjerne innebygde funksjoner/metoder som dict.items og str.split for å løse oppgaven.\n",
+    "\n",
+    "***Kjør kodeblokken under slik at du kan bruke dictionarien i oppgavene lenger ned***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "cheeses = {\n",
+    "  'cheddar': ('A235-4', 'A236-1', 'A236-2', 'A236-3', 'A236-5', 'C31-1', 'C31-2'),\n",
+    "  'mozarella': ('Q456-9', 'Q456-8', 'A234-5', 'Q457-1', 'Q457-2'),\n",
+    "  'gombost': ('ZLAFS55-4', 'ZLAFS55-9', 'GOMBOS-7', 'A236-4'),\n",
+    "  'geitost': ('SPAZ-1', 'SPAZ-3', 'EMACS45-0'),\n",
+    "  'port salut': ('B15-1', 'B15-2', 'B15-3', 'B15-4', 'B16-1', 'B16-2', 'B16-4'),\n",
+    "  'camembert': ('A243-1', 'A234-2', 'A234-3', 'A234-4', 'A235-1', 'A235-2', 'A235-3'),\n",
+    "  'ridder': ('GOMBOS-4', 'B16-3'),\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Finn og skriv ut alle hylleplasser til osten “port salut”. Dvs. skriv ut verdien til denne nøkkelen.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Riktig utskrift skal være:\n",
+    "```\n",
+    "('B15-1', 'B15-2', 'B15-3', 'B15-4', 'B16-1', 'B16-2', 'B16-4')\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dessverre så har hyllene fra B13 til B15, samt hyllene A234, A235 og C31 blitt infisert av et ostespisende virus! Finn alle typer oster som potensielt er smittet av viruset og legg disse til i en liste `infected_cheeses`.\n",
+    "\n",
+    "*Utskrift av infected_cheeses bør nå se slik ut:*\n",
+    "```\n",
+    "Potentially infected cheeses:  ['mozarella', 'camembert', 'cheddar', 'port salut']\n",
+    "```\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under og sjekk at den er riktig***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Tross osteviruset, ønsker Tine fortsatt å selge ost til det sultne norske folk. Finn alle typer ost der ingen individ er smittet av viruset, og skriv ut resultatet på formen <hylleplass\\> <ostetype\\>.\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Riktig utskrift skal være:\n",
+    ">```\n",
+    "ZLAFS55-4  gombost  \n",
+    "ZLAFS55-9  gombost  \n",
+    "GOMBOS-7   gombost  \n",
+    "A236-4     gombost  \n",
+    "SPAZ-1     geitost  \n",
+    "SPAZ-3     geitost  \n",
+    "EMACS45-0  geitost  \n",
+    "GOMBOS-4   ridder   \n",
+    "B16-3      ridder\n",
+    "```"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Soke i tekst.ipynb b/Ovinger/Oving7/Soke i tekst.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..583fe660a25b1bed83be72f27bfbd9c1fe87e780
--- /dev/null
+++ b/Ovinger/Oving7/Soke i tekst.ipynb	
@@ -0,0 +1,388 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li class = \"active\"><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "## Søke i tekst\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "* Lese fra fil\n",
+    "* Tekstbehandling\n",
+    "* Dictionary\n",
+    "\n",
+    "I denne oppgaven skal du bli bedre kjent med dictionaries og lesing fra fil. Bruk gjerne innebygde funksjoner, alt er lov!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon **`read_from_file(filename)`** som tar inn en string (**filename**) og returnerer innholdet i filen. Dersom funksjonen tar inn 'Alice_in_wonderland.txt' bør utskriften bli følgende:\n",
+    "\n",
+    "**Kjøring av kode:**\n",
+    "\n",
+    "```\n",
+    "Alice's Adventures in Wonderland\n",
+    "\n",
+    "                ALICE'S ADVENTURES IN WONDERLAND\n",
+    "\n",
+    "                          Lewis Carroll\n",
+    "\n",
+    "               THE MILLENNIUM FULCRUM EDITION 3.0\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n",
+    "                            CHAPTER I\n",
+    "\n",
+    "                      Down the Rabbit-Hole\n",
+    "\n",
+    ".\n",
+    ".\n",
+    ".\n",
+    "\n",
+    "```\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon **`remove_symbols(text)`** som fjerner alle spesialtegn fra teksten **text**, og gjør alle bokstaver små (lowercase).   \n",
+    "Ting som skal fjernes er slik som tall, komma, punktum og fnutter. La mellomrom stå slik at du kan skille ord fra hverandre.\n",
+    "\n",
+    "Dersom funksjonen tar inn 'Alice_in_wonderland.txt' bør utskriften bli følgende:\n",
+    "\n",
+    "**Kjøring av kode:**\n",
+    "```alices adventures in wonderland                alices adventures in wonderland                          lewis carroll ...```\n",
+    "\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Dette kan gjøres ved hjelp av funksjonene *.join()*, *.isalpha()* og *.lower()*. \n",
+    "\n",
+    "lower() gjør alle bokstavene i en streng små."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "streng = 'Hei pÃ… deg'\n",
+    "streng = ord.lower()\n",
+    "print(streng)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "isalpha() sjekker om en streng kun består av bokstaver"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "streng = 'Hei'\n",
+    "print(streng.isalpha())     \n",
+    "streng = 'Hei på deg'\n",
+    "print(streng.isalpha()) \n",
+    "streng = \"Hei!!!!\"\n",
+    "print(streng.isalpha())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "join() returnerer en streng hvor strengelementene i en liste blir knyttet sammen av str operatoren."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "s = '-'\n",
+    "seq = ('a', 'b', 'c')\n",
+    "print(s.join(seq))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Lag en funksjon **`count_words(filename)`** som tar inn en streng (**filename**), teller antall forekomster av alle ord i filen og returnerer en dictionary med resultatet.\n",
+    "\n",
+    "***Skriv koden din i boksen under.***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "#### Hint"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Bruk en dictionary med **ord** som nøkkel og **antall forekomster** som value."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "### d)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Sjekk om oppgave c) fungerer ved å kjøre funksjonen med 'Alice_in_wonderland.txt' som argument.\n",
+    "\n",
+    "*Du kan skrive ut hver linje i dictionarien for seg ved å bruke:*"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "alice_dict = countWords('Alice_in_wonderland.txt')\n",
+    "for word, value in alice_dict.items():\n",
+    "    print(word, value)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Tallak teller antall tall.ipynb b/Ovinger/Oving7/Tallak teller antall tall.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..8071b7d3c3b26c240773b3ddd6d55fd0c41ce926
--- /dev/null
+++ b/Ovinger/Oving7/Tallak teller antall tall.ipynb	
@@ -0,0 +1,230 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li class = \"active\"><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Tallak teller antall tall\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "- Dictionary\n",
+    "- Lese fra fil"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I denne oppgaven skal du hjelpe tallentusiasten Tallak med å lese inn data fra filen numbers.txt. Denne filen inneholder en liste med tall, noe som er Tallaks store lidenskap. Filen kan du se her: [numbers.txt](numbers.txt)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)\n",
+    "Tallak ønsker først og fremst å få en oversikt over størrelsen på filen:\n",
+    "\n",
+    "Lag funksjonen `number_of_lines(filename)` som returnerer totalt antall linjer i filen med navn `filename`. Test funksjonen med `numbers.txt`. Du bør få 36 som svar.\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Tallak ønsker deretter en liste som inneholder antall forekomster av hvert enkelt tall i listen:\n",
+    "    \n",
+    "Lag funksjonen `number_frequency(filename)` som returnerer en dictionary der hver nøkkel er et tall, og verdien til en nøkkel er antall forekomster av det tallet i filen med navn `filename`. Test funksjonen med *numbers.txt*\n",
+    "\n",
+    "***Skriv koden i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "*Riktig utskrift:* `{7: 4, 4: 7, 9: 4, 1: 3, 3: 5, 5: 7, 2: 4, 6: 1, 8: 1}`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## c)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Tallak er derimot ikke helt fornøyd med utskriften enda:\n",
+    "\n",
+    "Kall funksjonen `number_frequency` på *numbers.txt*. For hvert tall i resultatet skal du skrive ut en linje med tallet sammen med antall forekomster, separart med et kolon.\n",
+    "\n",
+    "**Eksempel på output fra kjøring:**\n",
+    "```\n",
+    "7: 4\n",
+    "4: 7\n",
+    "9: 4\n",
+    "1: 3\n",
+    "3: 5\n",
+    "5: 7\n",
+    "2: 4\n",
+    "6: 1\n",
+    "8: 1\n",
+    "```\n",
+    "\n",
+    "PS: output trenger ikke å være sortert på noen måte.\n",
+    "\n",
+    "***Skriv koden din i kodeblokken under***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/Tidtaking.ipynb b/Ovinger/Oving7/Tidtaking.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..d7cdc282cda5cf547a4bcdc839b5981acdd89387
--- /dev/null
+++ b/Ovinger/Oving7/Tidtaking.ipynb
@@ -0,0 +1,433 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "0f933c95",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li class = \"active\"><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Tidtaking\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "* Tidtaking"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "9149c232",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## Tutorial: Tidtaking"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "8fab575b",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Datamaskiner er raske. De kan utføre over 100 millioner operasjoner pr. sekund. Alt avhenger såklart av datamaskinen din, og dens komponenter. Forskjellige programmeringsspråk har også varierende hastighet på kjøring av kode. Jo mer komplisert kode du har, jo tregere kjører også koden din. Rask utførelse av kode er viktig, spesielt mtp sanntidsprogrammer. Derfor er det viktig å vit hva som kjører raskt, og hva som kjører tregt. Python er et programmeringsspråk som er kjent for å være tregt, men alt avhenger av hvordan du skriver koden din. For-løkken under, som kun itererer 10000000 ganger (og ikke gjør noen ting i loopen) kjører på 0.124668559ms, målt i gjennomsnitt over 100 kjøringer. (**Merk:** Tiden vil variere for hver kjøring og avhengig av prosessorkraft. Loopen nedenfor ble testet på en AMD Ryzen 5 3600 prosessor).   "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "a4b9e4c7",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "for _ in range(10000000):\n",
+    "    pass"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d7d314ca",
+   "metadata": {
+    "hidden": true
+   },
+   "source": [
+    "Med en gang loopen begynner å gjøre ting, ser vi at tiden øker. F.eks bruker loopen nedenfor målt i gjennomsnitt over 100 kjøringer, 0.3590ms på å kjøre. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "fb46b0d6",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "c = 0\n",
+    "for i in range(10000000):\n",
+    "    c += i"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "a6641b6e",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Vi er fortsatt nede på under 0.5 sekunds kjøring. Det kan være vanskelig å se for seg at kjøretid skal ha så mye å si, men større programmer kan ofte ta flere minutter å kjøre. Derfor er det viktig å tenke over hvordan man skriver koden sin. Eksemplet nedenfor viser tidsforskjellen mellom et numpy array og en vanlig liste."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "7cc12ece",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "from time import perf_counter\n",
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "2855397a",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "l = [i for i in range(100000)]\n",
+    "\n",
+    "start = perf_counter()\n",
+    "\n",
+    "l = [i + 2 for i in l]\n",
+    "\n",
+    "python_time = perf_counter() - start\n",
+    "\n",
+    "print(f'Python brukte {python_time:.5f}s')\n",
+    "\n",
+    "arr = np.array([i for i in range(100000)])\n",
+    "\n",
+    "start = perf_counter()\n",
+    "\n",
+    "arr += 2\n",
+    "\n",
+    "numpy_time = perf_counter() - start\n",
+    "\n",
+    "print(f'Numpy brukte {numpy_time:.5f}s')\n",
+    "\n",
+    "print(f'Numpy var {python_time/numpy_time} ganger raskere enn Python')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "f73e36d1",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Her ser vi en forskjell i tiden, hvor numpy er raskere enn \"standard\"-Python. Forskjellen blir enda større, jo større arrayet er:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "f5c16005",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "l = [i for i in range(1000000)]\n",
+    "\n",
+    "start = perf_counter()\n",
+    "\n",
+    "l = [i + 2 for i in l]\n",
+    "\n",
+    "python_time = perf_counter() - start\n",
+    "\n",
+    "print(f'Python brukte {python_time:.5f}s')\n",
+    "\n",
+    "arr = np.array([i for i in range(1000000)])\n",
+    "\n",
+    "start = perf_counter()\n",
+    "\n",
+    "arr += 2\n",
+    "\n",
+    "numpy_time = perf_counter() - start\n",
+    "\n",
+    "print(f'Numpy brukte {numpy_time:.5f}s')\n",
+    "\n",
+    "print(f'Numpy var {python_time/numpy_time} ganger raskere enn Python')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d5df68ef",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Eksemplene ovenfor er én måte å måle tiden kjøring av en kodeblokk tar. Vi importerer først funksjonen `perf_counter()` fra `time` biblioteket. `perf_counter()` er en funksjon som returnerer en slags relativ tid. Ved å lagre tiden før kjøring av kode, og deretter trekke denne fra tiden etter en kodeblokk har kjørt, finner vi hvor lang tid koden brukte på å kjøre."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "be7e2534",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "Det finnes andre måter å ta tiden på også. For eksempel `timeit()` funksjonen i `timeit` biblioteket:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "12d3f5b3",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "import timeit\n",
+    "\n",
+    "timeit.timeit('\"-\".join(str(n) for n in range(1000))', number=10000)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "fff7f994",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I motsetning til `perf_counter()` har `timeit()` en \"innebygd\" timer, og tar inn en _streng_ med kode. Kodeblokken over kjører koden `\"-\".join(str(n) for n in range(1000))` 10000 ganger, og returnerer tiden på hvor lang tid det tar å kjøre, i sekunder. \n",
+    "\n",
+    "Strengen _trenger_ ikke være på kun én linje, vi kan skrive større programmer og bruke med `timeit`:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "77812cbf",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "import timeit\n",
+    "\n",
+    "kode = \"\"\"\n",
+    "arr1 = np.array([i for i in range(1000000)])\n",
+    "arr2 = np.array([i for i in range(1000000)])\n",
+    "arr = np.dot(arr1, arr2)\n",
+    "\"\"\"\n",
+    "\n",
+    "timeit.timeit(kode, setup=\"import numpy as np\", number=1)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "679a5733",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I eksempelet over har vi lagt med et nytt argument til `timeit`-funksjonen; `setup`. Dette er kode som blir kjør _før_ tiden begynnes å tas. Denne er nyttig, da vi ofte ikke trenger ta med tiden det tar å f.eks importere numpy som i koden over. Vi har også satt inn `number=1`, som betyr at koden skal kjøres kun én gang. Hvis vi ikke skriver inn antall ganger koden skal kjøre, kjører den 1000000 ganger som standard."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "1ac51570",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "66a374e1",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I denne oppgaven skal du sammenligne tiden det tar å finne alle tall som er delelig med 7 mellom 0 og 10 000 000 mellom et numpy array og en standard python liste ved hjelp av `perfect_counter()`. Begyn å ta tiden fra _etter_ arrayet/listen er opprettet. Du kan bruke `[i for i in range(10_000_000)]` for å opprette listen/arrayet, slik som i tutorialen over. I oppgaven her skal du altså _først_ opprette et array og en liste bestående av tallene mellom 0 og 10 000 000, og _deretter_ lage et nytt array/ny liste med tallene som er delelige med 7.\n",
+    "\n",
+    "***Skriv koden din i kodeblokken nedenfor***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "c9fb3ca2",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ee0fe513",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "heading_collapsed": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "## b)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "b1a9b620",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "hidden": true,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "I denne oppgaven skal du sammenligne tiden det tar å sortere et array med pythons `sorted()`-funksjon, python listers `.sort()`-funksjon og numpys `np.sort()`. Gjør dette ved bruk av `timeit`-funksjonen fra `timeit`-biblioteket. Noen krav til oppgaven:\n",
+    "\n",
+    "* Arrayet/listen som skal sorteres skal inneholde 10 000 000 tilfeldige elementer mellom 0 og 10 000 000.\n",
+    "* Du _skal_ bruke `setup`-argumentet for imports og opprettelse av array/liste. Python-kodene kan bruke samme setup.\n",
+    "\n",
+    "Hvilken av sorteringsfunksjonene er raskest?\n",
+    "\n",
+    "***Skriv koden din i kodeblokken nedenfor***"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "3ac54c39",
+   "metadata": {
+    "hidden": true
+   },
+   "outputs": [],
+   "source": [
+    "# Skriv koden din her"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.7 ('tdt4195')",
+   "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.9.7"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "63b89d9bfc14eb4486c27c9b239bf0a08c4c63a21c176f83036370f0e204c130"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Ovinger/Oving7/Tre paa rad.ipynb b/Ovinger/Oving7/Tre paa rad.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b52cdcaf7d42b01831b701324f304cf004e9d690
--- /dev/null
+++ b/Ovinger/Oving7/Tre paa rad.ipynb	
@@ -0,0 +1,204 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "<nav class=\"navbar navbar-default\">\n",
+    "  <div class=\"container-fluid\">\n",
+    "    <div class=\"navbar-header\">\n",
+    "      <a class=\"navbar-brand\" href=\"_Oving7.ipynb\">Øving 7</a>\n",
+    "    </div>\n",
+    "    <ul class=\"nav navbar-nav\">\n",
+    "    <li><a href=\"Generelt%20om%20dictionary.ipynb\">Generelt om dictionary</a></li>\n",
+    "    <li><a href=\"Innebygde%20funksjoner%20i%20dictionaries.ipynb\">Innebygde funksjoner</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20sets.ipynb\">Generelt om sets</a></li>\n",
+    "    <li><a href=\"Generelt%20om%20filbehandling.ipynb\">Generelt om filbehandling</a></li>\n",
+    "    <li><a href=\"Osteviruset.ipynb\">Osteviruset</a></li>\n",
+    "    <li><a href=\"Bursdagsdatabasen.ipynb\">Bursdagsdatabasen</a></li>\n",
+    "    <li><a href=\"Tallak%20teller%20antall%20tall.ipynb\">Tallak teller antall tall</a></li>\n",
+    "    <li><a href=\"Enhetstesting.ipynb\">Enhetstesting</a></li>\n",
+    "    <li><a href=\"Tidtaking.ipynb\">Tidtaking</a></li>\n",
+    "    <li><a href=\"Moduler.ipynb\">Moduler</a></li>\n",
+    "    <li><a href=\"Opptaksgrenser.ipynb\">Opptaksgrenser</a></li>\n",
+    "    <li><a href=\"Soke%20i%20tekst.ipynb\">Søke i tekst</a></li>\n",
+    "    <li class = \"active\"><a href=\"Tre%20paa%20rad.ipynb\">Tre på rad</a></li>\n",
+    "    </ul>\n",
+    "  </div>\n",
+    "</nav>\n",
+    "\n",
+    "# Tre på rad\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "* Lister\n",
+    "* Funksjoner \n",
+    "* Betingelser\n",
+    "* Strenger\n",
+    " \n",
+    "I denne oppgaven skal du implementere det populære spillet 3 på rad. Spillet er for to spillere; x og o, som plasserer brikker . En spiller vinner om den klarer å få 3 på rad, enten horisontalt, vertikalt eller diagonalt.\n",
+    "\n",
+    "\n",
+    "**a)** Lag en funksjon som skriver ut brettet, det kan f.eks. se slikt ut om du vil:\n",
+    "\n",
+    "```python\n",
+    "    1   2   3\n",
+    "  -------------\n",
+    "1 |   |   |   |\n",
+    "  -------------\n",
+    "2 |   |   |   |\n",
+    "  -------------\n",
+    "3 |   |   |   |\n",
+    "  -------------\n",
+    "    ```"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**b)** Lag en funksjon som sjekker om en spiller har vunnet"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**c)** Lag en funksjon som tar inn navnene til de to brukerne."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**d)** Lag en funksjon som sjekker om et trekk er lovlig, altså at det ikke finnes andre brikker der."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**e)** Lag en funksjon som sjekker at input fra brukeren er riktig, altså at man ikke skriver inn rare tegn, eller skriver inn koordinater utenfor spillebrettet."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "**f)** Sett dette sammen til et fullverdig 3 på rad spill!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.9.10"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/_Oving7.ipynb b/Ovinger/Oving7/_Oving7.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..17463f99e65f93b3272da3f0d63dd9fee329815c
--- /dev/null
+++ b/Ovinger/Oving7/_Oving7.ipynb
@@ -0,0 +1,95 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "deletable": false,
+    "editable": false,
+    "run_control": {
+     "frozen": true
+    }
+   },
+   "source": [
+    "# Øving 7\n",
+    "\n",
+    "**Læringsmål:**\n",
+    "\n",
+    "- Dictionary\n",
+    "- Sets\n",
+    "- Lese fra fil\n",
+    "- Skrive til fil\n",
+    "- Lister\n",
+    "\n",
+    "## Godkjenning:\n",
+    "\n",
+    "For å få godkjent øvingen må du gjøre oppgaven [Tidtaking](Tidtaking.ipynb), i tillegg til minst ***4*** andre oppgaver. Vi anbefaler selvsagt å gjøre flere, ettersom man ikke får dekket alt pensum med kun 4-5 oppgaver.\n",
+    "\n",
+    "For å få dekket de viktigste konseptene anbefaler vi å gjøre følgende oppgaver:\n",
+    "- [Generelt om dictionary](Generelt%20om%20dictionary.ipynb)\n",
+    "- [Innebygde funksjoner](Innebygde%20funksjoner%20i%20dictionaries.ipynb)\n",
+    "- [Generelt om sets](Generelt%20om%20sets.ipynb)\n",
+    "- [Generelt om filbehandling](Generelt%20om%20filbehandling.ipynb)\n",
+    "- [Moduler](Moduler.ipynb)\n",
+    "\n",
+    "Oppgaver som er litt ekstra vanskelig er markert med en stjerne.\n",
+    "    \n",
+    "Alle oppgavene skal demonstreres til en læringsassistent på sal. I oppgaver der du skriver programkode skal også denne vises fram. Lykke til!\n",
+    "\n",
+    "Oppgave|Tema|Vanskelighetsgrad\n",
+    "---|---|---\n",
+    "[Generelt om dictionary](Generelt%20om%20dictionary.ipynb)|Dictionaries|\n",
+    "[Innebygde funksjoner](Innebygde%20funksjoner%20i%20dictionaries.ipynb)|Dictionaries|\n",
+    "[Generelt om sets](Generelt%20om%20sets.ipynb)|Sets|\n",
+    "[Generelt om filbehandling](Generelt%20om%20filbehandling.ipynb)|Filhåndtering|\n",
+    "[Osteviruset](Osteviruset.ipynb)|Dictionaries|\n",
+    "[Bursdagsdatabasen](Bursdagsdatabasen.ipynb)|Dictionaries, Exceptions|\n",
+    "[Tallak teller antall tall](Tallak%20teller%20antall%20tall.ipynb)|Filhåndtering, Dictionaries\n",
+    "[Enhetstesting](Enhetstesting.ipynb)|Enhetstesting, Spill, Kodeforståelse|\n",
+    "[Tidtaking](Tidtaking.ipynb)|Tidtaking|\n",
+    "[Moduler](Moduler.ipynb)|Moduler|\n",
+    "[Opptaksgrenser](Opptaksgrenser.ipynb)|Filhåndtering, Dictionaries|![img](./../../Resources/Images/star_yellow.svg)\n",
+    "[Søke i tekst](Soke%20i%20tekst.ipynb)|Filhåndtering, Dictionaries|![img](./../../Resources/Images/star_yellow.svg)\n",
+    "[Tre på rad](Tre%20paa%20rad.ipynb)|Repetisjon: Spill|![img](./../../Resources/Images/star_yellow.svg)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.9.7 ('tdt4195')",
+   "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.9.7"
+  },
+  "toc": {
+   "base_numbering": 1,
+   "nav_menu": {},
+   "number_sections": false,
+   "sideBar": true,
+   "skip_h1_title": false,
+   "title_cell": "Table of Contents",
+   "title_sidebar": "Contents",
+   "toc_cell": false,
+   "toc_position": {},
+   "toc_section_display": true,
+   "toc_window_display": false
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "63b89d9bfc14eb4486c27c9b239bf0a08c4c63a21c176f83036370f0e204c130"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Ovinger/Oving7/alice_in_wonderland.txt b/Ovinger/Oving7/alice_in_wonderland.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0f44756e51b11cbdaf618f44d212b282b7bc2ec3
--- /dev/null
+++ b/Ovinger/Oving7/alice_in_wonderland.txt
@@ -0,0 +1,3600 @@
+Alice's Adventures in Wonderland
+
+                ALICE'S ADVENTURES IN WONDERLAND
+
+                          Lewis Carroll
+
+               THE MILLENNIUM FULCRUM EDITION 3.0
+
+
+
+
+                            CHAPTER I
+
+                      Down the Rabbit-Hole
+
+
+  Alice was beginning to get very tired of sitting by her sister
+on the bank, and of having nothing to do:  once or twice she had
+peeped into the book her sister was reading, but it had no
+pictures or conversations in it, `and what is the use of a book,'
+thought Alice `without pictures or conversation?'
+
+  So she was considering in her own mind (as well as she could,
+for the hot day made her feel very sleepy and stupid), whether
+the pleasure of making a daisy-chain would be worth the trouble
+of getting up and picking the daisies, when suddenly a White
+Rabbit with pink eyes ran close by her.
+
+  There was nothing so VERY remarkable in that; nor did Alice
+think it so VERY much out of the way to hear the Rabbit say to
+itself, `Oh dear!  Oh dear!  I shall be late!'  (when she thought
+it over afterwards, it occurred to her that she ought to have
+wondered at this, but at the time it all seemed quite natural);
+but when the Rabbit actually TOOK A WATCH OUT OF ITS WAISTCOAT-
+POCKET, and looked at it, and then hurried on, Alice started to
+her feet, for it flashed across her mind that she had never
+before seen a rabbit with either a waistcoat-pocket, or a watch to
+take out of it, and burning with curiosity, she ran across the
+field after it, and fortunately was just in time to see it pop
+down a large rabbit-hole under the hedge.
+
+  In another moment down went Alice after it, never once
+considering how in the world she was to get out again.
+
+  The rabbit-hole went straight on like a tunnel for some way,
+and then dipped suddenly down, so suddenly that Alice had not a
+moment to think about stopping herself before she found herself
+falling down a very deep well.
+
+  Either the well was very deep, or she fell very slowly, for she
+had plenty of time as she went down to look about her and to
+wonder what was going to happen next.  First, she tried to look
+down and make out what she was coming to, but it was too dark to
+see anything; then she looked at the sides of the well, and
+noticed that they were filled with cupboards and book-shelves;
+here and there she saw maps and pictures hung upon pegs.  She
+took down a jar from one of the shelves as she passed; it was
+labelled `ORANGE MARMALADE', but to her great disappointment it
+was empty:  she did not like to drop the jar for fear of killing
+somebody, so managed to put it into one of the cupboards as she
+fell past it.
+
+  `Well!' thought Alice to herself, `after such a fall as this, I
+shall think nothing of tumbling down stairs!  How brave they'll
+all think me at home!  Why, I wouldn't say anything about it,
+even if I fell off the top of the house!' (Which was very likely
+true.)
+
+  Down, down, down.  Would the fall NEVER come to an end!  `I
+wonder how many miles I've fallen by this time?' she said aloud.
+`I must be getting somewhere near the centre of the earth.  Let
+me see:  that would be four thousand miles down, I think--' (for,
+you see, Alice had learnt several things of this sort in her
+lessons in the schoolroom, and though this was not a VERY good
+opportunity for showing off her knowledge, as there was no one to
+listen to her, still it was good practice to say it over) `--yes,
+that's about the right distance--but then I wonder what Latitude
+or Longitude I've got to?'  (Alice had no idea what Latitude was,
+or Longitude either, but thought they were nice grand words to
+say.)
+
+  Presently she began again.  `I wonder if I shall fall right
+THROUGH the earth!  How funny it'll seem to come out among the
+people that walk with their heads downward!  The Antipathies, I
+think--' (she was rather glad there WAS no one listening, this
+time, as it didn't sound at all the right word) `--but I shall
+have to ask them what the name of the country is, you know.
+Please, Ma'am, is this New Zealand or Australia?' (and she tried
+to curtsey as she spoke--fancy CURTSEYING as you're falling
+through the air!  Do you think you could manage it?)  `And what
+an ignorant little girl she'll think me for asking!  No, it'll
+never do to ask:  perhaps I shall see it written up somewhere.'
+
+  Down, down, down.  There was nothing else to do, so Alice soon
+began talking again.  `Dinah'll miss me very much to-night, I
+should think!'  (Dinah was the cat.)  `I hope they'll remember
+her saucer of milk at tea-time.  Dinah my dear!  I wish you were
+down here with me!  There are no mice in the air, I'm afraid, but
+you might catch a bat, and that's very like a mouse, you know.
+But do cats eat bats, I wonder?'  And here Alice began to get
+rather sleepy, and went on saying to herself, in a dreamy sort of
+way, `Do cats eat bats?  Do cats eat bats?' and sometimes, `Do
+bats eat cats?' for, you see, as she couldn't answer either
+question, it didn't much matter which way she put it.  She felt
+that she was dozing off, and had just begun to dream that she
+was walking hand in hand with Dinah, and saying to her very
+earnestly, `Now, Dinah, tell me the truth:  did you ever eat a
+bat?' when suddenly, thump! thump! down she came upon a heap of
+sticks and dry leaves, and the fall was over.
+
+  Alice was not a bit hurt, and she jumped up on to her feet in a
+moment:  she looked up, but it was all dark overhead; before her
+was another long passage, and the White Rabbit was still in
+sight, hurrying down it.  There was not a moment to be lost:
+away went Alice like the wind, and was just in time to hear it
+say, as it turned a corner, `Oh my ears and whiskers, how late
+it's getting!'  She was close behind it when she turned the
+corner, but the Rabbit was no longer to be seen:  she found
+herself in a long, low hall, which was lit up by a row of lamps
+hanging from the roof.
+
+  There were doors all round the hall, but they were all locked;
+and when Alice had been all the way down one side and up the
+other, trying every door, she walked sadly down the middle,
+wondering how she was ever to get out again.
+
+  Suddenly she came upon a little three-legged table, all made of
+solid glass; there was nothing on it except a tiny golden key,
+and Alice's first thought was that it might belong to one of the
+doors of the hall; but, alas! either the locks were too large, or
+the key was too small, but at any rate it would not open any of
+them.  However, on the second time round, she came upon a low
+curtain she had not noticed before, and behind it was a little
+door about fifteen inches high:  she tried the little golden key
+in the lock, and to her great delight it fitted!
+
+  Alice opened the door and found that it led into a small
+passage, not much larger than a rat-hole:  she knelt down and
+looked along the passage into the loveliest garden you ever saw.
+How she longed to get out of that dark hall, and wander about
+among those beds of bright flowers and those cool fountains, but
+she could not even get her head through the doorway; `and even if
+my head would go through,' thought poor Alice, `it would be of
+very little use without my shoulders.  Oh, how I wish
+I could shut up like a telescope!  I think I could, if I only
+know how to begin.'  For, you see, so many out-of-the-way things
+had happened lately, that Alice had begun to think that very few
+things indeed were really impossible.
+
+  There seemed to be no use in waiting by the little door, so she
+went back to the table, half hoping she might find another key on
+it, or at any rate a book of rules for shutting people up like
+telescopes:  this time she found a little bottle on it, (`which
+certainly was not here before,' said Alice,) and round the neck
+of the bottle was a paper label, with the words `DRINK ME'
+beautifully printed on it in large letters.
+
+  It was all very well to say `Drink me,' but the wise little
+Alice was not going to do THAT in a hurry.  `No, I'll look
+first,' she said, `and see whether it's marked "poison" or not';
+for she had read several nice little histories about children who
+had got burnt, and eaten up by wild beasts and other unpleasant
+things, all because they WOULD not remember the simple rules
+their friends had taught them:  such as, that a red-hot poker
+will burn you if you hold it too long; and that if you cut your
+finger VERY deeply with a knife, it usually bleeds; and she had
+never forgotten that, if you drink much from a bottle marked
+`poison,' it is almost certain to disagree with you, sooner or
+later.
+
+  However, this bottle was NOT marked `poison,' so Alice ventured
+to taste it, and finding it very nice, (it had, in fact, a sort
+of mixed flavour of cherry-tart, custard, pine-apple, roast
+turkey, toffee, and hot buttered toast,) she very soon finished
+it off.
+
+     *       *       *       *       *       *       *
+
+         *       *       *       *       *       *
+
+     *       *       *       *       *       *       *
+
+  `What a curious feeling!' said Alice; `I must be shutting up
+like a telescope.'
+
+  And so it was indeed:  she was now only ten inches high, and
+her face brightened up at the thought that she was now the right
+size for going through the little door into that lovely garden.
+First, however, she waited for a few minutes to see if she was
+going to shrink any further:  she felt a little nervous about
+this; `for it might end, you know,' said Alice to herself, `in my
+going out altogether, like a candle.  I wonder what I should be
+like then?'  And she tried to fancy what the flame of a candle is
+like after the candle is blown out, for she could not remember
+ever having seen such a thing.
+
+  After a while, finding that nothing more happened, she decided
+on going into the garden at once; but, alas for poor Alice!
+when she got to the door, she found she had forgotten the
+little golden key, and when she went back to the table for it,
+she found she could not possibly reach it:  she could see it
+quite plainly through the glass, and she tried her best to climb
+up one of the legs of the table, but it was too slippery;
+and when she had tired herself out with trying,
+the poor little thing sat down and cried.
+
+  `Come, there's no use in crying like that!' said Alice to
+herself, rather sharply; `I advise you to leave off this minute!'
+She generally gave herself very good advice, (though she very
+seldom followed it), and sometimes she scolded herself so
+severely as to bring tears into her eyes; and once she remembered
+trying to box her own ears for having cheated herself in a game
+of croquet she was playing against herself, for this curious
+child was very fond of pretending to be two people.  `But it's no
+use now,' thought poor Alice, `to pretend to be two people!  Why,
+there's hardly enough of me left to make ONE respectable
+person!'
+
+  Soon her eye fell on a little glass box that was lying under
+the table:  she opened it, and found in it a very small cake, on
+which the words `EAT ME' were beautifully marked in currants.
+`Well, I'll eat it,' said Alice, `and if it makes me grow larger,
+I can reach the key; and if it makes me grow smaller, I can creep
+under the door; so either way I'll get into the garden, and I
+don't care which happens!'
+
+  She ate a little bit, and said anxiously to herself, `Which
+way?  Which way?', holding her hand on the top of her head to
+feel which way it was growing, and she was quite surprised to
+find that she remained the same size:  to be sure, this generally
+happens when one eats cake, but Alice had got so much into the
+way of expecting nothing but out-of-the-way things to happen,
+that it seemed quite dull and stupid for life to go on in the
+common way.
+
+  So she set to work, and very soon finished off the cake.
+
+     *       *       *       *       *       *       *
+
+         *       *       *       *       *       *
+
+     *       *       *       *       *       *       *
+
+
+
+
+                           CHAPTER II
+
+                        The Pool of Tears
+
+
+  `Curiouser and curiouser!' cried Alice (she was so much
+surprised, that for the moment she quite forgot how to speak good
+English); `now I'm opening out like the largest telescope that
+ever was!  Good-bye, feet!' (for when she looked down at her
+feet, they seemed to be almost out of sight, they were getting so
+far off).  `Oh, my poor little feet, I wonder who will put on
+your shoes and stockings for you now, dears?  I'm sure _I_ shan't
+be able!  I shall be a great deal too far off to trouble myself
+about you:  you must manage the best way you can; --but I must be
+kind to them,' thought Alice, `or perhaps they won't walk the
+way I want to go!  Let me see:  I'll give them a new pair of
+boots every Christmas.'
+
+  And she went on planning to herself how she would manage it.
+`They must go by the carrier,' she thought; `and how funny it'll
+seem, sending presents to one's own feet!  And how odd the
+directions will look!
+
+            ALICE'S RIGHT FOOT, ESQ.
+                HEARTHRUG,
+                    NEAR THE FENDER,
+                        (WITH ALICE'S LOVE).
+
+Oh dear, what nonsense I'm talking!'
+
+  Just then her head struck against the roof of the hall:  in
+fact she was now more than nine feet high, and she at once took
+up the little golden key and hurried off to the garden door.
+
+  Poor Alice!  It was as much as she could do, lying down on one
+side, to look through into the garden with one eye; but to get
+through was more hopeless than ever:  she sat down and began to
+cry again.
+
+  `You ought to be ashamed of yourself,' said Alice, `a great
+girl like you,' (she might well say this), `to go on crying in
+this way!  Stop this moment, I tell you!'  But she went on all
+the same, shedding gallons of tears, until there was a large pool
+all round her, about four inches deep and reaching half down the
+hall.
+
+  After a time she heard a little pattering of feet in the
+distance, and she hastily dried her eyes to see what was coming.
+It was the White Rabbit returning, splendidly dressed, with a
+pair of white kid gloves in one hand and a large fan in the
+other:  he came trotting along in a great hurry, muttering to
+himself as he came, `Oh! the Duchess, the Duchess! Oh! won't she
+be savage if I've kept her waiting!'  Alice felt so desperate
+that she was ready to ask help of any one; so, when the Rabbit
+came near her, she began, in a low, timid voice, `If you please,
+sir--'  The Rabbit started violently, dropped the white kid
+gloves and the fan, and skurried away into the darkness as hard
+as he could go.
+
+  Alice took up the fan and gloves, and, as the hall was very
+hot, she kept fanning herself all the time she went on talking:
+`Dear, dear!  How queer everything is to-day!  And yesterday
+things went on just as usual.  I wonder if I've been changed in
+the night?  Let me think:  was I the same when I got up this
+morning?  I almost think I can remember feeling a little
+different.  But if I'm not the same, the next question is, Who in
+the world am I?  Ah, THAT'S the great puzzle!'  And she began
+thinking over all the children she knew that were of the same age
+as herself, to see if she could have been changed for any of
+them.
+
+  `I'm sure I'm not Ada,' she said, `for her hair goes in such
+long ringlets, and mine doesn't go in ringlets at all; and I'm
+sure I can't be Mabel, for I know all sorts of things, and she,
+oh! she knows such a very little!  Besides, SHE'S she, and I'm I,
+and--oh dear, how puzzling it all is!  I'll try if I know all the
+things I used to know.  Let me see:  four times five is twelve,
+and four times six is thirteen, and four times seven is--oh dear!
+I shall never get to twenty at that rate!  However, the
+Multiplication Table doesn't signify:  let's try Geography.
+London is the capital of Paris, and Paris is the capital of Rome,
+and Rome--no, THAT'S all wrong, I'm certain!  I must have been
+changed for Mabel!  I'll try and say "How doth the little--"'
+and she crossed her hands on her lap as if she were saying lessons,
+and began to repeat it, but her voice sounded hoarse and
+strange, and the words did not come the same as they used to do:--
+
+            `How doth the little crocodile
+              Improve his shining tail,
+            And pour the waters of the Nile
+              On every golden scale!
+
+            `How cheerfully he seems to grin,
+              How neatly spread his claws,
+            And welcome little fishes in
+              With gently smiling jaws!'
+
+  `I'm sure those are not the right words,' said poor Alice, and
+her eyes filled with tears again as she went on, `I must be Mabel
+after all, and I shall have to go and live in that poky little
+house, and have next to no toys to play with, and oh! ever so
+many lessons to learn!  No, I've made up my mind about it; if I'm
+Mabel, I'll stay down here!  It'll be no use their putting their
+heads down and saying "Come up again, dear!"  I shall only look
+up and say "Who am I then?  Tell me that first, and then, if I
+like being that person, I'll come up:  if not, I'll stay down
+here till I'm somebody else"--but, oh dear!' cried Alice, with a
+sudden burst of tears, `I do wish they WOULD put their heads
+down!  I am so VERY tired of being all alone here!'
+
+  As she said this she looked down at her hands, and was
+surprised to see that she had put on one of the Rabbit's little
+white kid gloves while she was talking.  `How CAN I have done
+that?' she thought.  `I must be growing small again.'  She got up
+and went to the table to measure herself by it, and found that,
+as nearly as she could guess, she was now about two feet high,
+and was going on shrinking rapidly:  she soon found out that the
+cause of this was the fan she was holding, and she dropped it
+hastily, just in time to avoid shrinking away altogether.
+
+`That WAS a narrow escape!' said Alice, a good deal frightened at
+the sudden change, but very glad to find herself still in
+existence; `and now for the garden!' and she ran with all speed
+back to the little door:  but, alas! the little door was shut
+again, and the little golden key was lying on the glass table as
+before, `and things are worse than ever,' thought the poor child,
+`for I never was so small as this before, never!  And I declare
+it's too bad, that it is!'
+
+  As she said these words her foot slipped, and in another
+moment, splash! she was up to her chin in salt water.  Her first
+idea was that she had somehow fallen into the sea, `and in that
+case I can go back by railway,' she said to herself.  (Alice had
+been to the seaside once in her life, and had come to the general
+conclusion, that wherever you go to on the English coast you find
+a number of bathing machines in the sea, some children digging in
+the sand with wooden spades, then a row of lodging houses, and
+behind them a railway station.)  However, she soon made out that
+she was in the pool of tears which she had wept when she was nine
+feet high.
+
+  `I wish I hadn't cried so much!' said Alice, as she swam about,
+trying to find her way out.  `I shall be punished for it now, I
+suppose, by being drowned in my own tears!  That WILL be a queer
+thing, to be sure!  However, everything is queer to-day.'
+
+  Just then she heard something splashing about in the pool a
+little way off, and she swam nearer to make out what it was:  at
+first she thought it must be a walrus or hippopotamus, but then
+she remembered how small she was now, and she soon made out that
+it was only a mouse that had slipped in like herself.
+
+  `Would it be of any use, now,' thought Alice, `to speak to this
+mouse?  Everything is so out-of-the-way down here, that I should
+think very likely it can talk:  at any rate, there's no harm in
+trying.'  So she began:  `O Mouse, do you know the way out of
+this pool?  I am very tired of swimming about here, O Mouse!'
+(Alice thought this must be the right way of speaking to a mouse:
+she had never done such a thing before, but she remembered having
+seen in her brother's Latin Grammar, `A mouse--of a mouse--to a
+mouse--a mouse--O mouse!')  The Mouse looked at her rather
+inquisitively, and seemed to her to wink with one of its little
+eyes, but it said nothing.
+
+  `Perhaps it doesn't understand English,' thought Alice; `I
+daresay it's a French mouse, come over with William the
+Conqueror.'  (For, with all her knowledge of history, Alice had
+no very clear notion how long ago anything had happened.)  So she
+began again:  `Ou est ma chatte?' which was the first sentence in
+her French lesson-book.  The Mouse gave a sudden leap out of the
+water, and seemed to quiver all over with fright.  `Oh, I beg
+your pardon!' cried Alice hastily, afraid that she had hurt the
+poor animal's feelings.  `I quite forgot you didn't like cats.'
+
+  `Not like cats!' cried the Mouse, in a shrill, passionate
+voice.  `Would YOU like cats if you were me?'
+
+  `Well, perhaps not,' said Alice in a soothing tone:  `don't be
+angry about it.  And yet I wish I could show you our cat Dinah:
+I think you'd take a fancy to cats if you could only see her.
+She is such a dear quiet thing,' Alice went on, half to herself,
+as she swam lazily about in the pool, `and she sits purring so
+nicely by the fire, licking her paws and washing her face--and
+she is such a nice soft thing to nurse--and she's such a capital
+one for catching mice--oh, I beg your pardon!' cried Alice again,
+for this time the Mouse was bristling all over, and she felt
+certain it must be really offended.  `We won't talk about her any
+more if you'd rather not.'
+
+  `We indeed!' cried the Mouse, who was trembling down to the end
+of his tail.  `As if I would talk on such a subject!  Our family
+always HATED cats:  nasty, low, vulgar things!  Don't let me hear
+the name again!'
+
+  `I won't indeed!' said Alice, in a great hurry to change the
+subject of conversation.  `Are you--are you fond--of--of dogs?'
+The Mouse did not answer, so Alice went on eagerly:  `There is
+such a nice little dog near our house I should like to show you!
+A little bright-eyed terrier, you know, with oh, such long curly
+brown hair!  And it'll fetch things when you throw them, and
+it'll sit up and beg for its dinner, and all sorts of things--I
+can't remember half of them--and it belongs to a farmer, you
+know, and he says it's so useful, it's worth a hundred pounds!
+He says it kills all the rats and--oh dear!' cried Alice in a
+sorrowful tone, `I'm afraid I've offended it again!'  For the
+Mouse was swimming away from her as hard as it could go, and
+making quite a commotion in the pool as it went.
+
+  So she called softly after it, `Mouse dear!  Do come back
+again, and we won't talk about cats or dogs either, if you don't
+like them!'  When the Mouse heard this, it turned round and swam
+slowly back to her:  its face was quite pale (with passion, Alice
+thought), and it said in a low trembling voice, `Let us get to
+the shore, and then I'll tell you my history, and you'll
+understand why it is I hate cats and dogs.'
+
+  It was high time to go, for the pool was getting quite crowded
+with the birds and animals that had fallen into it:  there were a
+Duck and a Dodo, a Lory and an Eaglet, and several other curious
+creatures.  Alice led the way, and the whole party swam to the
+shore.
+
+
+
+                           CHAPTER III
+
+                  A Caucus-Race and a Long Tale
+
+
+  They were indeed a queer-looking party that assembled on the
+bank--the birds with draggled feathers, the animals with their
+fur clinging close to them, and all dripping wet, cross, and
+uncomfortable.
+
+  The first question of course was, how to get dry again:  they
+had a consultation about this, and after a few minutes it seemed
+quite natural to Alice to find herself talking familiarly with
+them, as if she had known them all her life.  Indeed, she had
+quite a long argument with the Lory, who at last turned sulky,
+and would only say, `I am older than you, and must know better';
+and this Alice would not allow without knowing how old it was,
+and, as the Lory positively refused to tell its age, there was no
+more to be said.
+
+  At last the Mouse, who seemed to be a person of authority among
+them, called out, `Sit down, all of you, and listen to me!  I'LL
+soon make you dry enough!'  They all sat down at once, in a large
+ring, with the Mouse in the middle.  Alice kept her eyes
+anxiously fixed on it, for she felt sure she would catch a bad
+cold if she did not get dry very soon.
+
+  `Ahem!' said the Mouse with an important air, `are you all ready?
+This is the driest thing I know.  Silence all round, if you please!
+"William the Conqueror, whose cause was favoured by the pope, was
+soon submitted to by the English, who wanted leaders, and had been
+of late much accustomed to usurpation and conquest.  Edwin and
+Morcar, the earls of Mercia and Northumbria--"'
+
+  `Ugh!' said the Lory, with a shiver.
+
+  `I beg your pardon!' said the Mouse, frowning, but very
+politely:  `Did you speak?'
+
+  `Not I!' said the Lory hastily.
+
+  `I thought you did,' said the Mouse.  `--I proceed.  "Edwin and
+Morcar, the earls of Mercia and Northumbria, declared for him:
+and even Stigand, the patriotic archbishop of Canterbury, found
+it advisable--"'
+
+  `Found WHAT?' said the Duck.
+
+  `Found IT,' the Mouse replied rather crossly:  `of course you
+know what "it" means.'
+
+  `I know what "it" means well enough, when I find a thing,' said
+the Duck:  `it's generally a frog or a worm.  The question is,
+what did the archbishop find?'
+
+  The Mouse did not notice this question, but hurriedly went on,
+`"--found it advisable to go with Edgar Atheling to meet William
+and offer him the crown.  William's conduct at first was
+moderate.  But the insolence of his Normans--"  How are you
+getting on now, my dear?' it continued, turning to Alice as it
+spoke.
+
+  `As wet as ever,' said Alice in a melancholy tone:  `it doesn't
+seem to dry me at all.'
+
+  `In that case,' said the Dodo solemnly, rising to its feet, `I
+move that the meeting adjourn, for the immediate adoption of more
+energetic remedies--'
+
+  `Speak English!' said the Eaglet.  `I don't know the meaning of
+half those long words, and, what's more, I don't believe you do
+either!'  And the Eaglet bent down its head to hide a smile:
+some of the other birds tittered audibly.
+
+  `What I was going to say,' said the Dodo in an offended tone,
+`was, that the best thing to get us dry would be a Caucus-race.'
+
+  `What IS a Caucus-race?' said Alice; not that she wanted much
+to know, but the Dodo had paused as if it thought that SOMEBODY
+ought to speak, and no one else seemed inclined to say anything.
+
+  `Why,' said the Dodo, `the best way to explain it is to do it.'
+(And, as you might like to try the thing yourself, some winter
+day, I will tell you how the Dodo managed it.)
+
+  First it marked out a race-course, in a sort of circle, (`the
+exact shape doesn't matter,' it said,) and then all the party
+were placed along the course, here and there.  There was no `One,
+two, three, and away,' but they began running when they liked,
+and left off when they liked, so that it was not easy to know
+when the race was over.  However, when they had been running half
+an hour or so, and were quite dry again, the Dodo suddenly called
+out `The race is over!' and they all crowded round it, panting,
+and asking, `But who has won?'
+
+  This question the Dodo could not answer without a great deal of
+thought, and it sat for a long time with one finger pressed upon
+its forehead (the position in which you usually see Shakespeare,
+in the pictures of him), while the rest waited in silence.  At
+last the Dodo said, `EVERYBODY has won, and all must have
+prizes.'
+
+  `But who is to give the prizes?' quite a chorus of voices
+asked.
+
+  `Why, SHE, of course,' said the Dodo, pointing to Alice with
+one finger; and the whole party at once crowded round her,
+calling out in a confused way, `Prizes! Prizes!'
+
+  Alice had no idea what to do, and in despair she put her hand
+in her pocket, and pulled out a box of comfits, (luckily the salt
+water had not got into it), and handed them round as prizes.
+There was exactly one a-piece all round.
+
+  `But she must have a prize herself, you know,' said the Mouse.
+
+  `Of course,' the Dodo replied very gravely.  `What else have
+you got in your pocket?' he went on, turning to Alice.
+
+  `Only a thimble,' said Alice sadly.
+
+  `Hand it over here,' said the Dodo.
+
+  Then they all crowded round her once more, while the Dodo
+solemnly presented the thimble, saying `We beg your acceptance of
+this elegant thimble'; and, when it had finished this short
+speech, they all cheered.
+
+  Alice thought the whole thing very absurd, but they all looked
+so grave that she did not dare to laugh; and, as she could not
+think of anything to say, she simply bowed, and took the thimble,
+looking as solemn as she could.
+
+  The next thing was to eat the comfits:  this caused some noise
+and confusion, as the large birds complained that they could not
+taste theirs, and the small ones choked and had to be patted on
+the back.  However, it was over at last, and they sat down again
+in a ring, and begged the Mouse to tell them something more.
+
+  `You promised to tell me your history, you know,' said Alice,
+`and why it is you hate--C and D,' she added in a whisper, half
+afraid that it would be offended again.
+
+  `Mine is a long and a sad tale!' said the Mouse, turning to
+Alice, and sighing.
+
+  `It IS a long tail, certainly,' said Alice, looking down with
+wonder at the Mouse's tail; `but why do you call it sad?'  And
+she kept on puzzling about it while the Mouse was speaking, so
+that her idea of the tale was something like this:--
+
+                    `Fury said to a
+                   mouse, That he
+                 met in the
+               house,
+            "Let us
+              both go to
+                law:  I will
+                  prosecute
+                    YOU.  --Come,
+                       I'll take no
+                        denial; We
+                     must have a
+                 trial:  For
+              really this
+           morning I've
+          nothing
+         to do."
+           Said the
+             mouse to the
+               cur, "Such
+                 a trial,
+                   dear Sir,
+                         With
+                     no jury
+                  or judge,
+                would be
+              wasting
+             our
+              breath."
+               "I'll be
+                 judge, I'll
+                   be jury,"
+                         Said
+                    cunning
+                      old Fury:
+                     "I'll
+                      try the
+                         whole
+                          cause,
+                             and
+                        condemn
+                       you
+                      to
+                       death."'
+
+
+  `You are not attending!' said the Mouse to Alice severely.
+`What are you thinking of?'
+
+  `I beg your pardon,' said Alice very humbly:  `you had got to
+the fifth bend, I think?'
+
+  `I had NOT!' cried the Mouse, sharply and very angrily.
+
+  `A knot!' said Alice, always ready to make herself useful, and
+looking anxiously about her.  `Oh, do let me help to undo it!'
+
+  `I shall do nothing of the sort,' said the Mouse, getting up
+and walking away.  `You insult me by talking such nonsense!'
+
+  `I didn't mean it!' pleaded poor Alice.  `But you're so easily
+offended, you know!'
+
+  The Mouse only growled in reply.
+
+  `Please come back and finish your story!' Alice called after
+it; and the others all joined in chorus, `Yes, please do!' but
+the Mouse only shook its head impatiently, and walked a little
+quicker.
+
+  `What a pity it wouldn't stay!' sighed the Lory, as soon as it
+was quite out of sight; and an old Crab took the opportunity of
+saying to her daughter `Ah, my dear!  Let this be a lesson to you
+never to lose YOUR temper!'  `Hold your tongue, Ma!' said the
+young Crab, a little snappishly.  `You're enough to try the
+patience of an oyster!'
+
+  `I wish I had our Dinah here, I know I do!' said Alice aloud,
+addressing nobody in particular.  `She'd soon fetch it back!'
+
+  `And who is Dinah, if I might venture to ask the question?'
+said the Lory.
+
+  Alice replied eagerly, for she was always ready to talk about
+her pet:  `Dinah's our cat.  And she's such a capital one for
+catching mice you can't think!  And oh, I wish you could see her
+after the birds!  Why, she'll eat a little bird as soon as look
+at it!'
+
+  This speech caused a remarkable sensation among the party.
+Some of the birds hurried off at once:  one old Magpie began
+wrapping itself up very carefully, remarking, `I really must be
+getting home; the night-air doesn't suit my throat!' and a Canary
+called out in a trembling voice to its children, `Come away, my
+dears!  It's high time you were all in bed!'  On various pretexts
+they all moved off, and Alice was soon left alone.
+
+  `I wish I hadn't mentioned Dinah!' she said to herself in a
+melancholy tone.  `Nobody seems to like her, down here, and I'm
+sure she's the best cat in the world!  Oh, my dear Dinah!  I
+wonder if I shall ever see you any more!'  And here poor Alice
+began to cry again, for she felt very lonely and low-spirited.
+In a little while, however, she again heard a little pattering of
+footsteps in the distance, and she looked up eagerly, half hoping
+that the Mouse had changed his mind, and was coming back to
+finish his story.
+
+
+
+                           CHAPTER IV
+
+                The Rabbit Sends in a Little Bill
+
+
+  It was the White Rabbit, trotting slowly back again, and
+looking anxiously about as it went, as if it had lost something;
+and she heard it muttering to itself `The Duchess!  The Duchess!
+Oh my dear paws!  Oh my fur and whiskers!  She'll get me
+executed, as sure as ferrets are ferrets!  Where CAN I have
+dropped them, I wonder?'  Alice guessed in a moment that it was
+looking for the fan and the pair of white kid gloves, and she
+very good-naturedly began hunting about for them, but they were
+nowhere to be seen--everything seemed to have changed since her
+swim in the pool, and the great hall, with the glass table and
+the little door, had vanished completely.
+
+  Very soon the Rabbit noticed Alice, as she went hunting about,
+and called out to her in an angry tone, `Why, Mary Ann, what ARE
+you doing out here?  Run home this moment, and fetch me a pair of
+gloves and a fan!  Quick, now!'  And Alice was so much frightened
+that she ran off at once in the direction it pointed to, without
+trying to explain the mistake it had made.
+
+  `He took me for his housemaid,' she said to herself as she ran.
+`How surprised he'll be when he finds out who I am!  But I'd
+better take him his fan and gloves--that is, if I can find them.'
+As she said this, she came upon a neat little house, on the door
+of which was a bright brass plate with the name `W. RABBIT'
+engraved upon it.  She went in without knocking, and hurried
+upstairs, in great fear lest she should meet the real Mary Ann,
+and be turned out of the house before she had found the fan and
+gloves.
+
+  `How queer it seems,' Alice said to herself, `to be going
+messages for a rabbit!  I suppose Dinah'll be sending me on
+messages next!'  And she began fancying the sort of thing that
+would happen:  `"Miss Alice!  Come here directly, and get ready
+for your walk!" "Coming in a minute, nurse!  But I've got to see
+that the mouse doesn't get out."  Only I don't think,' Alice went
+on, `that they'd let Dinah stop in the house if it began ordering
+people about like that!'
+
+  By this time she had found her way into a tidy little room with
+a table in the window, and on it (as she had hoped) a fan and two
+or three pairs of tiny white kid gloves:  she took up the fan and
+a pair of the gloves, and was just going to leave the room, when
+her eye fell upon a little bottle that stood near the looking-
+glass.  There was no label this time with the words `DRINK ME,'
+but nevertheless she uncorked it and put it to her lips.  `I know
+SOMETHING interesting is sure to happen,' she said to herself,
+`whenever I eat or drink anything; so I'll just see what this
+bottle does.  I do hope it'll make me grow large again, for
+really I'm quite tired of being such a tiny little thing!'
+
+  It did so indeed, and much sooner than she had expected:
+before she had drunk half the bottle, she found her head pressing
+against the ceiling, and had to stoop to save her neck from being
+broken.  She hastily put down the bottle, saying to herself
+`That's quite enough--I hope I shan't grow any more--As it is, I
+can't get out at the door--I do wish I hadn't drunk quite so
+much!'
+
+  Alas! it was too late to wish that!  She went on growing, and
+growing, and very soon had to kneel down on the floor:  in
+another minute there was not even room for this, and she tried
+the effect of lying down with one elbow against the door, and the
+other arm curled round her head.  Still she went on growing, and,
+as a last resource, she put one arm out of the window, and one
+foot up the chimney, and said to herself `Now I can do no more,
+whatever happens.  What WILL become of me?'
+
+  Luckily for Alice, the little magic bottle had now had its full
+effect, and she grew no larger:  still it was very uncomfortable,
+and, as there seemed to be no sort of chance of her ever getting
+out of the room again, no wonder she felt unhappy.
+
+  `It was much pleasanter at home,' thought poor Alice, `when one
+wasn't always growing larger and smaller, and being ordered about
+by mice and rabbits.  I almost wish I hadn't gone down that
+rabbit-hole--and yet--and yet--it's rather curious, you know,
+this sort of life!  I do wonder what CAN have happened to me!
+When I used to read fairy-tales, I fancied that kind of thing
+never happened, and now here I am in the middle of one!  There
+ought to be a book written about me, that there ought!  And when
+I grow up, I'll write one--but I'm grown up now,' she added in a
+sorrowful tone; `at least there's no room to grow up any more
+HERE.'
+
+  `But then,' thought Alice, `shall I NEVER get any older than I
+am now?  That'll be a comfort, one way--never to be an old woman--
+but then--always to have lessons to learn!  Oh, I shouldn't like THAT!'
+
+  `Oh, you foolish Alice!' she answered herself.  `How can you
+learn lessons in here?  Why, there's hardly room for YOU, and no
+room at all for any lesson-books!'
+
+  And so she went on, taking first one side and then the other,
+and making quite a conversation of it altogether; but after a few
+minutes she heard a voice outside, and stopped to listen.
+
+  `Mary Ann!  Mary Ann!' said the voice.  `Fetch me my gloves
+this moment!'  Then came a little pattering of feet on the
+stairs.  Alice knew it was the Rabbit coming to look for her, and
+she trembled till she shook the house, quite forgetting that she
+was now about a thousand times as large as the Rabbit, and had no
+reason to be afraid of it.
+
+  Presently the Rabbit came up to the door, and tried to open it;
+but, as the door opened inwards, and Alice's elbow was pressed
+hard against it, that attempt proved a failure.  Alice heard it
+say to itself `Then I'll go round and get in at the window.'
+
+  `THAT you won't' thought Alice, and, after waiting till she
+fancied she heard the Rabbit just under the window, she suddenly
+spread out her hand, and made a snatch in the air.  She did not
+get hold of anything, but she heard a little shriek and a fall,
+and a crash of broken glass, from which she concluded that it was
+just possible it had fallen into a cucumber-frame, or something
+of the sort.
+
+  Next came an angry voice--the Rabbit's--`Pat! Pat!  Where are
+you?'  And then a voice she had never heard before, `Sure then
+I'm here!  Digging for apples, yer honour!'
+
+  `Digging for apples, indeed!' said the Rabbit angrily.  `Here!
+Come and help me out of THIS!'  (Sounds of more broken glass.)
+
+  `Now tell me, Pat, what's that in the window?'
+
+  `Sure, it's an arm, yer honour!'  (He pronounced it `arrum.')
+
+  `An arm, you goose!   Who ever saw one that size?  Why, it
+fills the whole window!'
+
+  `Sure, it does, yer honour:  but it's an arm for all that.'
+
+  `Well, it's got no business there, at any rate:  go and take it
+away!'
+
+  There was a long silence after this, and Alice could only hear
+whispers now and then; such as, `Sure, I don't like it, yer
+honour, at all, at all!'  `Do as I tell you, you coward!' and at
+last she spread out her hand again, and made another snatch in
+the air.  This time there were TWO little shrieks, and more
+sounds of broken glass.  `What a number of cucumber-frames there
+must be!' thought Alice.  `I wonder what they'll do next!  As for
+pulling me out of the window, I only wish they COULD!  I'm sure I
+don't want to stay in here any longer!'
+
+  She waited for some time without hearing anything more:  at
+last came a rumbling of little cartwheels, and the sound of a
+good many voices all talking together:  she made out the words:
+`Where's the other ladder?--Why, I hadn't to bring but one;
+Bill's got the other--Bill! fetch it here, lad!--Here, put 'em up
+at this corner--No, tie 'em together first--they don't reach half
+high enough yet--Oh! they'll do well enough; don't be particular--
+Here, Bill! catch hold of this rope--Will the roof bear?--Mind
+that loose slate--Oh, it's coming down!  Heads below!' (a loud
+crash)--`Now, who did that?--It was Bill, I fancy--Who's to go
+down the chimney?--Nay, I shan't! YOU do it!--That I won't,
+then!--Bill's to go down--Here, Bill! the master says you're to
+go down the chimney!'
+
+  `Oh! So Bill's got to come down the chimney, has he?' said
+Alice to herself.  `Shy, they seem to put everything upon Bill!
+I wouldn't be in Bill's place for a good deal:  this fireplace is
+narrow, to be sure; but I THINK I can kick a little!'
+
+  She drew her foot as far down the chimney as she could, and
+waited till she heard a little animal (she couldn't guess of what
+sort it was) scratching and scrambling about in the chimney close
+above her:  then, saying to herself `This is Bill,' she gave one
+sharp kick, and waited to see what would happen next.
+
+  The first thing she heard was a general chorus of `There goes
+Bill!' then the Rabbit's voice along--`Catch him, you by the
+hedge!' then silence, and then another confusion of voices--`Hold
+up his head--Brandy now--Don't choke him--How was it, old fellow?
+What happened to you?  Tell us all about it!'
+
+  Last came a little feeble, squeaking voice, (`That's Bill,'
+thought Alice,) `Well, I hardly know--No more, thank ye; I'm
+better now--but I'm a deal too flustered to tell you--all I know
+is, something comes at me like a Jack-in-the-box, and up I goes
+like a sky-rocket!'
+
+  `So you did, old fellow!' said the others.
+
+  `We must burn the house down!' said the Rabbit's voice; and
+Alice called out as loud as she could, `If you do.  I'll set
+Dinah at you!'
+
+  There was a dead silence instantly, and Alice thought to
+herself, `I wonder what they WILL do next!  If they had any
+sense, they'd take the roof off.'  After a minute or two, they
+began moving about again, and Alice heard the Rabbit say, `A
+barrowful will do, to begin with.'
+
+  `A barrowful of WHAT?' thought Alice; but she had not long to
+doubt, for the next moment a shower of little pebbles came
+rattling in at the window, and some of them hit her in the face.
+`I'll put a stop to this,' she said to herself, and shouted out,
+`You'd better not do that again!' which produced another dead
+silence.
+
+  Alice noticed with some surprise that the pebbles were all
+turning into little cakes as they lay on the floor, and a bright
+idea came into her head.  `If I eat one of these cakes,' she
+thought, `it's sure to make SOME change in my size; and as it
+can't possibly make me larger, it must make me smaller, I
+suppose.'
+
+  So she swallowed one of the cakes, and was delighted to find
+that she began shrinking directly.  As soon as she was small
+enough to get through the door, she ran out of the house, and
+found quite a crowd of little animals and birds waiting outside.
+The poor little Lizard, Bill, was in the middle, being held up by
+two guinea-pigs, who were giving it something out of a bottle.
+They all made a rush at Alice the moment she appeared; but she
+ran off as hard as she could, and soon found herself safe in a
+thick wood.
+
+  `The first thing I've got to do,' said Alice to herself, as she
+wandered about in the wood, `is to grow to my right size again;
+and the second thing is to find my way into that lovely garden.
+I think that will be the best plan.'
+
+  It sounded an excellent plan, no doubt, and very neatly and
+simply arranged; the only difficulty was, that she had not the
+smallest idea how to set about it; and while she was peering
+about anxiously among the trees, a little sharp bark just over
+her head made her look up in a great hurry.
+
+  An enormous puppy was looking down at her with large round
+eyes, and feebly stretching out one paw, trying to touch her.
+`Poor little thing!' said Alice, in a coaxing tone, and she tried
+hard to whistle to it; but she was terribly frightened all the
+time at the thought that it might be hungry, in which case it
+would be very likely to eat her up in spite of all her coaxing.
+
+  Hardly knowing what she did, she picked up a little bit of
+stick, and held it out to the puppy; whereupon the puppy jumped
+into the air off all its feet at once, with a yelp of delight,
+and rushed at the stick, and made believe to worry it; then Alice
+dodged behind a great thistle, to keep herself from being run
+over; and the moment she appeared on the other side, the puppy
+made another rush at the stick, and tumbled head over heels in
+its hurry to get hold of it; then Alice, thinking it was very
+like having a game of play with a cart-horse, and expecting every
+moment to be trampled under its feet, ran round the thistle
+again; then the puppy began a series of short charges at the
+stick, running a very little way forwards each time and a long
+way back, and barking hoarsely all the while, till at last it sat
+down a good way off, panting, with its tongue hanging out of its
+mouth, and its great eyes half shut.
+
+  This seemed to Alice a good opportunity for making her escape;
+so she set off at once, and ran till she was quite tired and out
+of breath, and till the puppy's bark sounded quite faint in the
+distance.
+
+  `And yet what a dear little puppy it was!' said Alice, as she
+leant against a buttercup to rest herself, and fanned herself
+with one of the leaves:  `I should have liked teaching it tricks
+very much, if--if I'd only been the right size to do it!  Oh
+dear!  I'd nearly forgotten that I've got to grow up again!  Let
+me see--how IS it to be managed?  I suppose I ought to eat or
+drink something or other; but the great question is, what?'
+
+  The great question certainly was, what?  Alice looked all round
+her at the flowers and the blades of grass, but she did not see
+anything that looked like the right thing to eat or drink under
+the circumstances.  There was a large mushroom growing near her,
+about the same height as herself; and when she had looked under
+it, and on both sides of it, and behind it, it occurred to her
+that she might as well look and see what was on the top of it.
+
+  She stretched herself up on tiptoe, and peeped over the edge of
+the mushroom, and her eyes immediately met those of a large
+caterpillar, that was sitting on the top with its arms folded,
+quietly smoking a long hookah, and taking not the smallest notice
+of her or of anything else.
+
+
+
+                            CHAPTER V
+
+                    Advice from a Caterpillar
+
+
+  The Caterpillar and Alice looked at each other for some time in
+silence:  at last the Caterpillar took the hookah out of its
+mouth, and addressed her in a languid, sleepy voice.
+
+  `Who are YOU?' said the Caterpillar.
+
+  This was not an encouraging opening for a conversation.  Alice
+replied, rather shyly, `I--I hardly know, sir, just at present--
+at least I know who I WAS when I got up this morning, but I think
+I must have been changed several times since then.'
+
+  `What do you mean by that?' said the Caterpillar sternly.
+`Explain yourself!'
+
+  `I can't explain MYSELF, I'm afraid, sir' said Alice, `because
+I'm not myself, you see.'
+
+  `I don't see,' said the Caterpillar.
+
+  `I'm afraid I can't put it more clearly,' Alice replied very
+politely, `for I can't understand it myself to begin with; and
+being so many different sizes in a day is very confusing.'
+
+  `It isn't,' said the Caterpillar.
+
+  `Well, perhaps you haven't found it so yet,' said Alice; `but
+when you have to turn into a chrysalis--you will some day, you
+know--and then after that into a butterfly, I should think you'll
+feel it a little queer, won't you?'
+
+  `Not a bit,' said the Caterpillar.
+
+  `Well, perhaps your feelings may be different,' said Alice;
+`all I know is, it would feel very queer to ME.'
+
+  `You!' said the Caterpillar contemptuously.  `Who are YOU?'
+
+  Which brought them back again to the beginning of the
+conversation.  Alice felt a little irritated at the Caterpillar's
+making such VERY short remarks, and she drew herself up and said,
+very gravely, `I think, you ought to tell me who YOU are, first.'
+
+  `Why?' said the Caterpillar.
+
+  Here was another puzzling question; and as Alice could not
+think of any good reason, and as the Caterpillar seemed to be in
+a VERY unpleasant state of mind, she turned away.
+
+  `Come back!' the Caterpillar called after her.  `I've something
+important to say!'
+
+  This sounded promising, certainly:  Alice turned and came back
+again.
+
+  `Keep your temper,' said the Caterpillar.
+
+  `Is that all?' said Alice, swallowing down her anger as well as
+she could.
+
+  `No,' said the Caterpillar.
+
+  Alice thought she might as well wait, as she had nothing else
+to do, and perhaps after all it might tell her something worth
+hearing.  For some minutes it puffed away without speaking, but
+at last it unfolded its arms, took the hookah out of its mouth
+again, and said, `So you think you're changed, do you?'
+
+  `I'm afraid I am, sir,' said Alice; `I can't remember things as
+I used--and I don't keep the same size for ten minutes together!'
+
+  `Can't remember WHAT things?' said the Caterpillar.
+
+  `Well, I've tried to say "HOW DOTH THE LITTLE BUSY BEE," but it
+all came different!' Alice replied in a very melancholy voice.
+
+  `Repeat, "YOU ARE OLD, FATHER WILLIAM,"' said the Caterpillar.
+
+  Alice folded her hands, and began:--
+
+    `You are old, Father William,' the young man said,
+      `And your hair has become very white;
+    And yet you incessantly stand on your head--
+      Do you think, at your age, it is right?'
+
+    `In my youth,' Father William replied to his son,
+      `I feared it might injure the brain;
+    But, now that I'm perfectly sure I have none,
+      Why, I do it again and again.'
+
+    `You are old,' said the youth, `as I mentioned before,
+      And have grown most uncommonly fat;
+    Yet you turned a back-somersault in at the door--
+      Pray, what is the reason of that?'
+
+    `In my youth,' said the sage, as he shook his grey locks,
+      `I kept all my limbs very supple
+    By the use of this ointment--one shilling the box--
+      Allow me to sell you a couple?'
+
+    `You are old,' said the youth, `and your jaws are too weak
+      For anything tougher than suet;
+    Yet you finished the goose, with the bones and the beak--
+      Pray how did you manage to do it?'
+
+    `In my youth,' said his father, `I took to the law,
+      And argued each case with my wife;
+    And the muscular strength, which it gave to my jaw,
+      Has lasted the rest of my life.'
+
+    `You are old,' said the youth, `one would hardly suppose
+      That your eye was as steady as ever;
+    Yet you balanced an eel on the end of your nose--
+      What made you so awfully clever?'
+
+    `I have answered three questions, and that is enough,'
+      Said his father; `don't give yourself airs!
+    Do you think I can listen all day to such stuff?
+      Be off, or I'll kick you down stairs!'
+
+
+  `That is not said right,' said the Caterpillar.
+
+  `Not QUITE right, I'm afraid,' said Alice, timidly; `some of the
+words have got altered.'
+
+  `It is wrong from beginning to end,' said the Caterpillar
+decidedly, and there was silence for some minutes.
+
+  The Caterpillar was the first to speak.
+
+  `What size do you want to be?' it asked.
+
+  `Oh, I'm not particular as to size,' Alice hastily replied;
+`only one doesn't like changing so often, you know.'
+
+  `I DON'T know,' said the Caterpillar.
+
+  Alice said nothing:  she had never been so much contradicted in
+her life before, and she felt that she was losing her temper.
+
+  `Are you content now?' said the Caterpillar.
+
+  `Well, I should like to be a LITTLE larger, sir, if you
+wouldn't mind,' said Alice:  `three inches is such a wretched
+height to be.'
+
+  `It is a very good height indeed!' said the Caterpillar
+angrily, rearing itself upright as it spoke (it was exactly three
+inches high).
+
+  `But I'm not used to it!' pleaded poor Alice in a piteous tone.
+And she thought of herself, `I wish the creatures wouldn't be so
+easily offended!'
+
+  `You'll get used to it in time,' said the Caterpillar; and it
+put the hookah into its mouth and began smoking again.
+
+  This time Alice waited patiently until it chose to speak again.
+In a minute or two the Caterpillar took the hookah out of its
+mouth and yawned once or twice, and shook itself.  Then it got
+down off the mushroom, and crawled away in the grass, merely
+remarking as it went, `One side will make you grow taller, and
+the other side will make you grow shorter.'
+
+  `One side of WHAT?  The other side of WHAT?' thought Alice to
+herself.
+
+  `Of the mushroom,' said the Caterpillar, just as if she had
+asked it aloud; and in another moment it was out of sight.
+
+  Alice remained looking thoughtfully at the mushroom for a
+minute, trying to make out which were the two sides of it; and as
+it was perfectly round, she found this a very difficult question.
+However, at last she stretched her arms round it as far as they
+would go, and broke off a bit of the edge with each hand.
+
+  `And now which is which?' she said to herself, and nibbled a
+little of the right-hand bit to try the effect:  the next moment
+she felt a violent blow underneath her chin:  it had struck her
+foot!
+
+  She was a good deal frightened by this very sudden change, but
+she felt that there was no time to be lost, as she was shrinking
+rapidly; so she set to work at once to eat some of the other bit.
+Her chin was pressed so closely against her foot, that there was
+hardly room to open her mouth; but she did it at last, and
+managed to swallow a morsel of the lefthand bit.
+
+
+     *       *       *       *       *       *       *
+
+         *       *       *       *       *       *
+
+     *       *       *       *       *       *       *
+
+  `Come, my head's free at last!' said Alice in a tone of
+delight, which changed into alarm in another moment, when she
+found that her shoulders were nowhere to be found:  all she could
+see, when she looked down, was an immense length of neck, which
+seemed to rise like a stalk out of a sea of green leaves that lay
+far below her.
+
+  `What CAN all that green stuff be?' said Alice.  `And where
+HAVE my shoulders got to?  And oh, my poor hands, how is it I
+can't see you?'  She was moving them about as she spoke, but no
+result seemed to follow, except a little shaking among the
+distant green leaves.
+
+  As there seemed to be no chance of getting her hands up to her
+head, she tried to get her head down to them, and was delighted
+to find that her neck would bend about easily in any direction,
+like a serpent.  She had just succeeded in curving it down into a
+graceful zigzag, and was going to dive in among the leaves, which
+she found to be nothing but the tops of the trees under which she
+had been wandering, when a sharp hiss made her draw back in a
+hurry:  a large pigeon had flown into her face, and was beating
+her violently with its wings.
+
+  `Serpent!' screamed the Pigeon.
+
+  `I'm NOT a serpent!' said Alice indignantly.  `Let me alone!'
+
+  `Serpent, I say again!' repeated the Pigeon, but in a more
+subdued tone, and added with a kind of sob, `I've tried every
+way, and nothing seems to suit them!'
+
+  `I haven't the least idea what you're talking about,' said
+Alice.
+
+  `I've tried the roots of trees, and I've tried banks, and I've
+tried hedges,' the Pigeon went on, without attending to her; `but
+those serpents!  There's no pleasing them!'
+
+  Alice was more and more puzzled, but she thought there was no
+use in saying anything more till the Pigeon had finished.
+
+  `As if it wasn't trouble enough hatching the eggs,' said the
+Pigeon; `but I must be on the look-out for serpents night and
+day!  Why, I haven't had a wink of sleep these three weeks!'
+
+  `I'm very sorry you've been annoyed,' said Alice, who was
+beginning to see its meaning.
+
+  `And just as I'd taken the highest tree in the wood,' continued
+the Pigeon, raising its voice to a shriek, `and just as I was
+thinking I should be free of them at last, they must needs come
+wriggling down from the sky!  Ugh, Serpent!'
+
+  `But I'm NOT a serpent, I tell you!' said Alice.  `I'm a--I'm
+a--'
+
+  `Well!  WHAT are you?' said the Pigeon.  `I can see you're
+trying to invent something!'
+
+  `I--I'm a little girl,' said Alice, rather doubtfully, as she
+remembered the number of changes she had gone through that day.
+
+  `A likely story indeed!' said the Pigeon in a tone of the
+deepest contempt.  `I've seen a good many little girls in my
+time, but never ONE with such a neck as that!  No, no!  You're a
+serpent; and there's no use denying it.  I suppose you'll be
+telling me next that you never tasted an egg!'
+
+  `I HAVE tasted eggs, certainly,' said Alice, who was a very
+truthful child; `but little girls eat eggs quite as much as
+serpents do, you know.'
+
+  `I don't believe it,' said the Pigeon; `but if they do, why
+then they're a kind of serpent, that's all I can say.'
+
+  This was such a new idea to Alice, that she was quite silent
+for a minute or two, which gave the Pigeon the opportunity of
+adding, `You're looking for eggs, I know THAT well enough; and
+what does it matter to me whether you're a little girl or a
+serpent?'
+
+  `It matters a good deal to ME,' said Alice hastily; `but I'm
+not looking for eggs, as it happens; and if I was, I shouldn't
+want YOURS:  I don't like them raw.'
+
+  `Well, be off, then!' said the Pigeon in a sulky tone, as it
+settled down again into its nest.  Alice crouched down among the
+trees as well as she could, for her neck kept getting entangled
+among the branches, and every now and then she had to stop and
+untwist it.  After a while she remembered that she still held the
+pieces of mushroom in her hands, and she set to work very
+carefully, nibbling first at one and then at the other, and
+growing sometimes taller and sometimes shorter, until she had
+succeeded in bringing herself down to her usual height.
+
+  It was so long since she had been anything near the right size,
+that it felt quite strange at first; but she got used to it in a
+few minutes, and began talking to herself, as usual.  `Come,
+there's half my plan done now!  How puzzling all these changes
+are!  I'm never sure what I'm going to be, from one minute to
+another!  However, I've got back to my right size:  the next
+thing is, to get into that beautiful garden--how IS that to be
+done, I wonder?'  As she said this, she came suddenly upon an
+open place, with a little house in it about four feet high.
+`Whoever lives there,' thought Alice, `it'll never do to come
+upon them THIS size:  why, I should frighten them out of their
+wits!'  So she began nibbling at the righthand bit again, and did
+not venture to go near the house till she had brought herself
+down to nine inches high.
+
+
+
+                           CHAPTER VI
+
+                         Pig and Pepper
+
+
+  For a minute or two she stood looking at the house, and
+wondering what to do next, when suddenly a footman in livery came
+running out of the wood--(she considered him to be a footman
+because he was in livery:  otherwise, judging by his face only,
+she would have called him a fish)--and rapped loudly at the door
+with his knuckles.  It was opened by another footman in livery,
+with a round face, and large eyes like a frog; and both footmen,
+Alice noticed, had powdered hair that curled all over their
+heads.  She felt very curious to know what it was all about, and
+crept a little way out of the wood to listen.
+
+  The Fish-Footman began by producing from under his arm a great
+letter, nearly as large as himself, and this he handed over to
+the other, saying, in a solemn tone, `For the Duchess.  An
+invitation from the Queen to play croquet.'  The Frog-Footman
+repeated, in the same solemn tone, only changing the order of the
+words a little, `From the Queen.  An invitation for the Duchess
+to play croquet.'
+
+  Then they both bowed low, and their curls got entangled
+together.
+
+  Alice laughed so much at this, that she had to run back into
+the wood for fear of their hearing her; and when she next peeped
+out the Fish-Footman was gone, and the other was sitting on the
+ground near the door, staring stupidly up into the sky.
+
+  Alice went timidly up to the door, and knocked.
+
+  `There's no sort of use in knocking,' said the Footman, `and
+that for two reasons.  First, because I'm on the same side of the
+door as you are; secondly, because they're making such a noise
+inside, no one could possibly hear you.'  And certainly there was
+a most extraordinary noise going on within--a constant howling
+and sneezing, and every now and then a great crash, as if a dish
+or kettle had been broken to pieces.
+
+  `Please, then,' said Alice, `how am I to get in?'
+
+  `There might be some sense in your knocking,' the Footman went
+on without attending to her, `if we had the door between us.  For
+instance, if you were INSIDE, you might knock, and I could let
+you out, you know.'  He was looking up into the sky all the time
+he was speaking, and this Alice thought decidedly uncivil.  `But
+perhaps he can't help it,' she said to herself; `his eyes are so
+VERY nearly at the top of his head.  But at any rate he might
+answer questions.--How am I to get in?' she repeated, aloud.
+
+  `I shall sit here,' the Footman remarked, `till tomorrow--'
+
+  At this moment the door of the house opened, and a large plate
+came skimming out, straight at the Footman's head:  it just
+grazed his nose, and broke to pieces against one of the trees
+behind him.
+
+  `--or next day, maybe,' the Footman continued in the same tone,
+exactly as if nothing had happened.
+
+  `How am I to get in?' asked Alice again, in a louder tone.
+
+  `ARE you to get in at all?' said the Footman.  `That's the
+first question, you know.'
+
+  It was, no doubt:  only Alice did not like to be told so.
+`It's really dreadful,' she muttered to herself, `the way all the
+creatures argue.  It's enough to drive one crazy!'
+
+  The Footman seemed to think this a good opportunity for
+repeating his remark, with variations.  `I shall sit here,' he
+said, `on and off, for days and days.'
+
+  `But what am I to do?' said Alice.
+
+  `Anything you like,' said the Footman, and began whistling.
+
+  `Oh, there's no use in talking to him,' said Alice desperately:
+`he's perfectly idiotic!'  And she opened the door and went in.
+
+  The door led right into a large kitchen, which was full of
+smoke from one end to the other:  the Duchess was sitting on a
+three-legged stool in the middle, nursing a baby; the cook was
+leaning over the fire, stirring a large cauldron which seemed to
+be full of soup.
+
+  `There's certainly too much pepper in that soup!' Alice said to
+herself, as well as she could for sneezing.
+
+  There was certainly too much of it in the air.  Even the
+Duchess sneezed occasionally; and as for the baby, it was
+sneezing and howling alternately without a moment's pause.  The
+only things in the kitchen that did not sneeze, were the cook,
+and a large cat which was sitting on the hearth and grinning from
+ear to ear.
+
+  `Please would you tell me,' said Alice, a little timidly, for
+she was not quite sure whether it was good manners for her to
+speak first, `why your cat grins like that?'
+
+  `It's a Cheshire cat,' said the Duchess, `and that's why.  Pig!'
+
+  She said the last word with such sudden violence that Alice
+quite jumped; but she saw in another moment that it was addressed
+to the baby, and not to her, so she took courage, and went on
+again:--
+
+  `I didn't know that Cheshire cats always grinned; in fact, I
+didn't know that cats COULD grin.'
+
+  `They all can,' said the Duchess; `and most of 'em do.'
+
+  `I don't know of any that do,' Alice said very politely,
+feeling quite pleased to have got into a conversation.
+
+  `You don't know much,' said the Duchess; `and that's a fact.'
+
+  Alice did not at all like the tone of this remark, and thought
+it would be as well to introduce some other subject of
+conversation.  While she was trying to fix on one, the cook took
+the cauldron of soup off the fire, and at once set to work
+throwing everything within her reach at the Duchess and the baby
+--the fire-irons came first; then followed a shower of saucepans,
+plates, and dishes.  The Duchess took no notice of them even when
+they hit her; and the baby was howling so much already, that it
+was quite impossible to say whether the blows hurt it or not.
+
+  `Oh, PLEASE mind what you're doing!' cried Alice, jumping up
+and down in an agony of terror.  `Oh, there goes his PRECIOUS
+nose'; as an unusually large saucepan flew close by it, and very
+nearly carried it off.
+
+  `If everybody minded their own business,' the Duchess said in a
+hoarse growl, `the world would go round a deal faster than it
+does.'
+
+  `Which would NOT be an advantage,' said Alice, who felt very
+glad to get an opportunity of showing off a little of her
+knowledge.  `Just think of what work it would make with the day
+and night!  You see the earth takes twenty-four hours to turn
+round on its axis--'
+
+  `Talking of axes,' said the Duchess, `chop off her head!'
+
+  Alice glanced rather anxiously at the cook, to see if she meant
+to take the hint; but the cook was busily stirring the soup, and
+seemed not to be listening, so she went on again:  `Twenty-four
+hours, I THINK; or is it twelve?  I--'
+
+  `Oh, don't bother ME,' said the Duchess; `I never could abide
+figures!'  And with that she began nursing her child again,
+singing a sort of lullaby to it as she did so, and giving it a
+violent shake at the end of every line:
+
+        `Speak roughly to your little boy,
+          And beat him when he sneezes:
+        He only does it to annoy,
+          Because he knows it teases.'
+
+                    CHORUS.
+
+    (In which the cook and the baby joined):--
+
+                `Wow! wow! wow!'
+
+  While the Duchess sang the second verse of the song, she kept
+tossing the baby violently up and down, and the poor little thing
+howled so, that Alice could hardly hear the words:--
+
+        `I speak severely to my boy,
+          I beat him when he sneezes;
+        For he can thoroughly enjoy
+          The pepper when he pleases!'
+
+                    CHORUS.
+
+                `Wow! wow! wow!'
+
+  `Here! you may nurse it a bit, if you like!' the Duchess said
+to Alice, flinging the baby at her as she spoke.  `I must go and
+get ready to play croquet with the Queen,' and she hurried out of
+the room.  The cook threw a frying-pan after her as she went out,
+but it just missed her.
+
+  Alice caught the baby with some difficulty, as it was a queer-
+shaped little creature, and held out its arms and legs in all
+directions, `just like a star-fish,' thought Alice.  The poor
+little thing was snorting like a steam-engine when she caught it,
+and kept doubling itself up and straightening itself out again,
+so that altogether, for the first minute or two, it was as much
+as she could do to hold it.
+
+  As soon as she had made out the proper way of nursing it,
+(which was to twist it up into a sort of knot, and then keep
+tight hold of its right ear and left foot, so as to prevent its
+undoing itself,) she carried it out into the open air.  `IF I
+don't take this child away with me,' thought Alice, `they're sure
+to kill it in a day or two:  wouldn't it be murder to leave it
+behind?'  She said the last words out loud, and the little thing
+grunted in reply (it had left off sneezing by this time).  `Don't
+grunt,' said Alice; `that's not at all a proper way of expressing
+yourself.'
+
+  The baby grunted again, and Alice looked very anxiously into
+its face to see what was the matter with it.  There could be no
+doubt that it had a VERY turn-up nose, much more like a snout
+than a real nose; also its eyes were getting extremely small for
+a baby:  altogether Alice did not like the look of the thing at
+all.  `But perhaps it was only sobbing,' she thought, and looked
+into its eyes again, to see if there were any tears.
+
+  No, there were no tears.  `If you're going to turn into a pig,
+my dear,' said Alice, seriously, `I'll have nothing more to do
+with you.  Mind now!'  The poor little thing sobbed again (or
+grunted, it was impossible to say which), and they went on for
+some while in silence.
+
+  Alice was just beginning to think to herself, `Now, what am I
+to do with this creature when I get it home?' when it grunted
+again, so violently, that she looked down into its face in some
+alarm.  This time there could be NO mistake about it:  it was
+neither more nor less than a pig, and she felt that it would be
+quite absurd for her to carry it further.
+
+  So she set the little creature down, and felt quite relieved to
+see it trot away quietly into the wood.  `If it had grown up,'
+she said to herself, `it would have made a dreadfully ugly child:
+but it makes rather a handsome pig, I think.'  And she began
+thinking over other children she knew, who might do very well as
+pigs, and was just saying to herself, `if one only knew the right
+way to change them--' when she was a little startled by seeing
+the Cheshire Cat sitting on a bough of a tree a few yards off.
+
+  The Cat only grinned when it saw Alice.  It looked good-
+natured, she thought:  still it had VERY long claws and a great
+many teeth, so she felt that it ought to be treated with respect.
+
+  `Cheshire Puss,' she began, rather timidly, as she did not at
+all know whether it would like the name:  however, it only
+grinned a little wider.  `Come, it's pleased so far,' thought
+Alice, and she went on.  `Would you tell me, please, which way I
+ought to go from here?'
+
+  `That depends a good deal on where you want to get to,' said
+the Cat.
+
+  `I don't much care where--' said Alice.
+
+  `Then it doesn't matter which way you go,' said the Cat.
+
+  `--so long as I get SOMEWHERE,' Alice added as an explanation.
+
+  `Oh, you're sure to do that,' said the Cat, `if you only walk
+long enough.'
+
+  Alice felt that this could not be denied, so she tried another
+question.  `What sort of people live about here?'
+
+  `In THAT direction,' the Cat said, waving its right paw round,
+`lives a Hatter:  and in THAT direction,' waving the other paw,
+`lives a March Hare.  Visit either you like:  they're both mad.'
+
+  `But I don't want to go among mad people,' Alice remarked.
+
+  `Oh, you can't help that,' said the Cat:  `we're all mad here.
+I'm mad.  You're mad.'
+
+  `How do you know I'm mad?' said Alice.
+
+  `You must be,' said the Cat, `or you wouldn't have come here.'
+
+  Alice didn't think that proved it at all; however, she went on
+`And how do you know that you're mad?'
+
+  `To begin with,' said the Cat, `a dog's not mad.  You grant
+that?'
+
+  `I suppose so,' said Alice.
+
+  `Well, then,' the Cat went on, `you see, a dog growls when it's
+angry, and wags its tail when it's pleased.  Now I growl when I'm
+pleased, and wag my tail when I'm angry.  Therefore I'm mad.'
+
+  `I call it purring, not growling,' said Alice.
+
+  `Call it what you like,' said the Cat.  `Do you play croquet
+with the Queen to-day?'
+
+  `I should like it very much,' said Alice, `but I haven't been
+invited yet.'
+
+  `You'll see me there,' said the Cat, and vanished.
+
+  Alice was not much surprised at this, she was getting so used
+to queer things happening.  While she was looking at the place
+where it had been, it suddenly appeared again.
+
+  `By-the-bye, what became of the baby?' said the Cat.  `I'd
+nearly forgotten to ask.'
+
+  `It turned into a pig,' Alice quietly said, just as if it had
+come back in a natural way.
+
+  `I thought it would,' said the Cat, and vanished again.
+
+  Alice waited a little, half expecting to see it again, but it
+did not appear, and after a minute or two she walked on in the
+direction in which the March Hare was said to live.  `I've seen
+hatters before,' she said to herself; `the March Hare will be
+much the most interesting, and perhaps as this is May it won't be
+raving mad--at least not so mad as it was in March.'  As she said
+this, she looked up, and there was the Cat again, sitting on a
+branch of a tree.
+
+  `Did you say pig, or fig?' said the Cat.
+
+  `I said pig,' replied Alice; `and I wish you wouldn't keep
+appearing and vanishing so suddenly:  you make one quite giddy.'
+
+  `All right,' said the Cat; and this time it vanished quite slowly,
+beginning with the end of the tail, and ending with the grin,
+which remained some time after the rest of it had gone.
+
+  `Well!  I've often seen a cat without a grin,' thought Alice;
+`but a grin without a cat!  It's the most curious thing I ever
+saw in my life!'
+
+  She had not gone much farther before she came in sight of the
+house of the March Hare:  she thought it must be the right house,
+because the chimneys were shaped like ears and the roof was
+thatched with fur.  It was so large a house, that she did not
+like to go nearer till she had nibbled some more of the lefthand
+bit of mushroom, and raised herself to about two feet high:  even
+then she walked up towards it rather timidly, saying to herself
+`Suppose it should be raving mad after all!  I almost wish I'd
+gone to see the Hatter instead!'
+
+
+
+                           CHAPTER VII
+
+                         A Mad Tea-Party
+
+
+  There was a table set out under a tree in front of the house,
+and the March Hare and the Hatter were having tea at it:  a
+Dormouse was sitting between them, fast asleep, and the other two
+were using it as a cushion, resting their elbows on it, and talking
+over its head.  `Very uncomfortable for the Dormouse,' thought Alice;
+`only, as it's asleep, I suppose it doesn't mind.'
+
+  The table was a large one, but the three were all crowded
+together at one corner of it:  `No room!  No room!' they cried
+out when they saw Alice coming.  `There's PLENTY of room!' said
+Alice indignantly, and she sat down in a large arm-chair at one
+end of the table.
+
+  `Have some wine,' the March Hare said in an encouraging tone.
+
+  Alice looked all round the table, but there was nothing on it
+but tea.  `I don't see any wine,' she remarked.
+
+  `There isn't any,' said the March Hare.
+
+  `Then it wasn't very civil of you to offer it,' said Alice
+angrily.
+
+  `It wasn't very civil of you to sit down without being
+invited,' said the March Hare.
+
+  `I didn't know it was YOUR table,' said Alice; `it's laid for a
+great many more than three.'
+
+  `Your hair wants cutting,' said the Hatter.  He had been
+looking at Alice for some time with great curiosity, and this was
+his first speech.
+
+  `You should learn not to make personal remarks,' Alice said
+with some severity; `it's very rude.'
+
+  The Hatter opened his eyes very wide on hearing this; but all
+he SAID was, `Why is a raven like a writing-desk?'
+
+  `Come, we shall have some fun now!' thought Alice.  `I'm glad
+they've begun asking riddles.--I believe I can guess that,' she
+added aloud.
+
+  `Do you mean that you think you can find out the answer to it?'
+said the March Hare.
+
+  `Exactly so,' said Alice.
+
+  `Then you should say what you mean,' the March Hare went on.
+
+  `I do,' Alice hastily replied; `at least--at least I mean what
+I say--that's the same thing, you know.'
+
+  `Not the same thing a bit!' said the Hatter.  `You might just
+as well say that "I see what I eat" is the same thing as "I eat
+what I see"!'
+
+  `You might just as well say,' added the March Hare, `that "I
+like what I get" is the same thing as "I get what I like"!'
+
+  `You might just as well say,' added the Dormouse, who seemed to
+be talking in his sleep, `that "I breathe when I sleep" is the
+same thing as "I sleep when I breathe"!'
+
+  `It IS the same thing with you,' said the Hatter, and here the
+conversation dropped, and the party sat silent for a minute,
+while Alice thought over all she could remember about ravens and
+writing-desks, which wasn't much.
+
+  The Hatter was the first to break the silence.  `What day of
+the month is it?' he said, turning to Alice:  he had taken his
+watch out of his pocket, and was looking at it uneasily, shaking
+it every now and then, and holding it to his ear.
+
+  Alice considered a little, and then said `The fourth.'
+
+  `Two days wrong!' sighed the Hatter.  `I told you butter
+wouldn't suit the works!' he added looking angrily at the March
+Hare.
+
+  `It was the BEST butter,' the March Hare meekly replied.
+
+  `Yes, but some crumbs must have got in as well,' the Hatter
+grumbled:  `you shouldn't have put it in with the bread-knife.'
+
+  The March Hare took the watch and looked at it gloomily:  then
+he dipped it into his cup of tea, and looked at it again:  but he
+could think of nothing better to say than his first remark, `It
+was the BEST butter, you know.'
+
+  Alice had been looking over his shoulder with some curiosity.
+`What a funny watch!' she remarked.  `It tells the day of the
+month, and doesn't tell what o'clock it is!'
+
+  `Why should it?' muttered the Hatter.  `Does YOUR watch tell
+you what year it is?'
+
+  `Of course not,' Alice replied very readily:  `but that's
+because it stays the same year for such a long time together.'
+
+  `Which is just the case with MINE,' said the Hatter.
+
+  Alice felt dreadfully puzzled.  The Hatter's remark seemed to
+have no sort of meaning in it, and yet it was certainly English.
+`I don't quite understand you,' she said, as politely as she
+could.
+
+  `The Dormouse is asleep again,' said the Hatter, and he poured
+a little hot tea upon its nose.
+
+  The Dormouse shook its head impatiently, and said, without
+opening its eyes, `Of course, of course; just what I was going to
+remark myself.'
+
+  `Have you guessed the riddle yet?' the Hatter said, turning to
+Alice again.
+
+  `No, I give it up,' Alice replied:  `what's the answer?'
+
+  `I haven't the slightest idea,' said the Hatter.
+
+  `Nor I,' said the March Hare.
+
+  Alice sighed wearily.  `I think you might do something better
+with the time,' she said, `than waste it in asking riddles that
+have no answers.'
+
+  `If you knew Time as well as I do,' said the Hatter, `you
+wouldn't talk about wasting IT.  It's HIM.'
+
+  `I don't know what you mean,' said Alice.
+
+  `Of course you don't!' the Hatter said, tossing his head
+contemptuously.  `I dare say you never even spoke to Time!'
+
+  `Perhaps not,' Alice cautiously replied:  `but I know I have to
+beat time when I learn music.'
+
+  `Ah! that accounts for it,' said the Hatter.  `He won't stand
+beating.  Now, if you only kept on good terms with him, he'd do
+almost anything you liked with the clock.  For instance, suppose
+it were nine o'clock in the morning, just time to begin lessons:
+you'd only have to whisper a hint to Time, and round goes the
+clock in a twinkling!  Half-past one, time for dinner!'
+
+  (`I only wish it was,' the March Hare said to itself in a
+whisper.)
+
+  `That would be grand, certainly,' said Alice thoughtfully:
+`but then--I shouldn't be hungry for it, you know.'
+
+  `Not at first, perhaps,' said the Hatter:  `but you could keep
+it to half-past one as long as you liked.'
+
+  `Is that the way YOU manage?' Alice asked.
+
+  The Hatter shook his head mournfully.  `Not I!' he replied.
+`We quarrelled last March--just before HE went mad, you know--'
+(pointing with his tea spoon at the March Hare,) `--it was at the
+great concert given by the Queen of Hearts, and I had to sing
+
+            "Twinkle, twinkle, little bat!
+            How I wonder what you're at!"
+
+You know the song, perhaps?'
+
+  `I've heard something like it,' said Alice.
+
+  `It goes on, you know,' the Hatter continued, `in this way:--
+
+            "Up above the world you fly,
+            Like a tea-tray in the sky.
+                    Twinkle, twinkle--"'
+
+Here the Dormouse shook itself, and began singing in its sleep
+`Twinkle, twinkle, twinkle, twinkle--' and went on so long that
+they had to pinch it to make it stop.
+
+  `Well, I'd hardly finished the first verse,' said the Hatter,
+`when the Queen jumped up and bawled out, "He's murdering the
+time!  Off with his head!"'
+
+  `How dreadfully savage!' exclaimed Alice.
+
+  `And ever since that,' the Hatter went on in a mournful tone,
+`he won't do a thing I ask!  It's always six o'clock now.'
+
+  A bright idea came into Alice's head.  `Is that the reason so
+many tea-things are put out here?' she asked.
+
+  `Yes, that's it,' said the Hatter with a sigh:  `it's always
+tea-time, and we've no time to wash the things between whiles.'
+
+  `Then you keep moving round, I suppose?' said Alice.
+
+  `Exactly so,' said the Hatter:  `as the things get used up.'
+
+  `But what happens when you come to the beginning again?' Alice
+ventured to ask.
+
+  `Suppose we change the subject,' the March Hare interrupted,
+yawning.  `I'm getting tired of this.  I vote the young lady
+tells us a story.'
+
+  `I'm afraid I don't know one,' said Alice, rather alarmed at
+the proposal.
+
+  `Then the Dormouse shall!' they both cried.  `Wake up,
+Dormouse!'  And they pinched it on both sides at once.
+
+  The Dormouse slowly opened his eyes.  `I wasn't asleep,' he
+said in a hoarse, feeble voice:  `I heard every word you fellows
+were saying.'
+
+  `Tell us a story!' said the March Hare.
+
+  `Yes, please do!' pleaded Alice.
+
+  `And be quick about it,' added the Hatter, `or you'll be asleep
+again before it's done.'
+
+  `Once upon a time there were three little sisters,' the
+Dormouse began in a great hurry; `and their names were Elsie,
+Lacie, and Tillie; and they lived at the bottom of a well--'
+
+  `What did they live on?' said Alice, who always took a great
+interest in questions of eating and drinking.
+
+  `They lived on treacle,' said the Dormouse, after thinking a
+minute or two.
+
+  `They couldn't have done that, you know,' Alice gently
+remarked; `they'd have been ill.'
+
+  `So they were,' said the Dormouse; `VERY ill.'
+
+  Alice tried to fancy to herself what such an extraordinary ways
+of living would be like, but it puzzled her too much, so she went
+on:  `But why did they live at the bottom of a well?'
+
+  `Take some more tea,' the March Hare said to Alice, very
+earnestly.
+
+  `I've had nothing yet,' Alice replied in an offended tone, `so
+I can't take more.'
+
+  `You mean you can't take LESS,' said the Hatter:  `it's very
+easy to take MORE than nothing.'
+
+  `Nobody asked YOUR opinion,' said Alice.
+
+  `Who's making personal remarks now?' the Hatter asked
+triumphantly.
+
+  Alice did not quite know what to say to this:  so she helped
+herself to some tea and bread-and-butter, and then turned to the
+Dormouse, and repeated her question.  `Why did they live at the
+bottom of a well?'
+
+  The Dormouse again took a minute or two to think about it, and
+then said, `It was a treacle-well.'
+
+  `There's no such thing!'  Alice was beginning very angrily, but
+the Hatter and the March Hare went `Sh! sh!' and the Dormouse
+sulkily remarked, `If you can't be civil, you'd better finish the
+story for yourself.'
+
+  `No, please go on!' Alice said very humbly; `I won't interrupt
+again.  I dare say there may be ONE.'
+
+  `One, indeed!' said the Dormouse indignantly.  However, he
+consented to go on.  `And so these three little sisters--they
+were learning to draw, you know--'
+
+  `What did they draw?' said Alice, quite forgetting her promise.
+
+  `Treacle,' said the Dormouse, without considering at all this
+time.
+
+  `I want a clean cup,' interrupted the Hatter:  `let's all move
+one place on.'
+
+  He moved on as he spoke, and the Dormouse followed him:  the
+March Hare moved into the Dormouse's place, and Alice rather
+unwillingly took the place of the March Hare.  The Hatter was the
+only one who got any advantage from the change:  and Alice was a
+good deal worse off than before, as the March Hare had just upset
+the milk-jug into his plate.
+
+  Alice did not wish to offend the Dormouse again, so she began
+very cautiously:  `But I don't understand.  Where did they draw
+the treacle from?'
+
+  `You can draw water out of a water-well,' said the Hatter; `so
+I should think you could draw treacle out of a treacle-well--eh,
+stupid?'
+
+  `But they were IN the well,' Alice said to the Dormouse, not
+choosing to notice this last remark.
+
+  `Of course they were', said the Dormouse; `--well in.'
+
+  This answer so confused poor Alice, that she let the Dormouse
+go on for some time without interrupting it.
+
+  `They were learning to draw,' the Dormouse went on, yawning and
+rubbing its eyes, for it was getting very sleepy; `and they drew
+all manner of things--everything that begins with an M--'
+
+  `Why with an M?' said Alice.
+
+  `Why not?' said the March Hare.
+
+  Alice was silent.
+
+  The Dormouse had closed its eyes by this time, and was going
+off into a doze; but, on being pinched by the Hatter, it woke up
+again with a little shriek, and went on:  `--that begins with an
+M, such as mouse-traps, and the moon, and memory, and muchness--
+you know you say things are "much of a muchness"--did you ever
+see such a thing as a drawing of a muchness?'
+
+  `Really, now you ask me,' said Alice, very much confused, `I
+don't think--'
+
+  `Then you shouldn't talk,' said the Hatter.
+
+  This piece of rudeness was more than Alice could bear:  she got
+up in great disgust, and walked off; the Dormouse fell asleep
+instantly, and neither of the others took the least notice of her
+going, though she looked back once or twice, half hoping that
+they would call after her:  the last time she saw them, they were
+trying to put the Dormouse into the teapot.
+
+  `At any rate I'll never go THERE again!' said Alice as she
+picked her way through the wood.  `It's the stupidest tea-party I
+ever was at in all my life!'
+
+  Just as she said this, she noticed that one of the trees had a
+door leading right into it.  `That's very curious!' she thought.
+`But everything's curious today.  I think I may as well go in at once.'
+And in she went.
+
+  Once more she found herself in the long hall, and close to the
+little glass table.  `Now, I'll manage better this time,'
+she said to herself, and began by taking the little golden key,
+and unlocking the door that led into the garden.  Then she went
+to work nibbling at the mushroom (she had kept a piece of it
+in her pocket) till she was about a foot high:  then she walked down
+the little passage:  and THEN--she found herself at last in the
+beautiful garden, among the bright flower-beds and the cool fountains.
+
+
+
+                          CHAPTER VIII
+
+                   The Queen's Croquet-Ground
+
+
+  A large rose-tree stood near the entrance of the garden:  the
+roses growing on it were white, but there were three gardeners at
+it, busily painting them red.  Alice thought this a very curious
+thing, and she went nearer to watch them, and just as she came up
+to them she heard one of them say, `Look out now, Five!  Don't go
+splashing paint over me like that!'
+
+  `I couldn't help it,' said Five, in a sulky tone; `Seven jogged
+my elbow.'
+
+  On which Seven looked up and said, `That's right, Five!  Always
+lay the blame on others!'
+
+  `YOU'D better not talk!' said Five.  `I heard the Queen say only
+yesterday you deserved to be beheaded!'
+
+  `What for?' said the one who had spoken first.
+
+  `That's none of YOUR business, Two!' said Seven.
+
+  `Yes, it IS his business!' said Five, `and I'll tell him--it
+was for bringing the cook tulip-roots instead of onions.'
+
+  Seven flung down his brush, and had just begun `Well, of all
+the unjust things--' when his eye chanced to fall upon Alice, as
+she stood watching them, and he checked himself suddenly:  the
+others looked round also, and all of them bowed low.
+
+  `Would you tell me,' said Alice, a little timidly, `why you are
+painting those roses?'
+
+  Five and Seven said nothing, but looked at Two.  Two began in a
+low voice, `Why the fact is, you see, Miss, this here ought to
+have been a RED rose-tree, and we put a white one in by mistake;
+and if the Queen was to find it out, we should all have our heads
+cut off, you know.  So you see, Miss, we're doing our best, afore
+she comes, to--'  At this moment Five, who had been anxiously
+looking across the garden, called out `The Queen!  The Queen!'
+and the three gardeners instantly threw themselves flat upon
+their faces.  There was a sound of many footsteps, and Alice
+looked round, eager to see the Queen.
+
+  First came ten soldiers carrying clubs; these were all shaped
+like the three gardeners, oblong and flat, with their hands and
+feet at the corners:  next the ten courtiers; these were
+ornamented all over with diamonds, and walked two and two, as the
+soldiers did.  After these came the royal children; there were
+ten of them, and the little dears came jumping merrily along hand
+in hand, in couples:  they were all ornamented with hearts.  Next
+came the guests, mostly Kings and Queens, and among them Alice
+recognised the White Rabbit:  it was talking in a hurried nervous
+manner, smiling at everything that was said, and went by without
+noticing her.  Then followed the Knave of Hearts, carrying the
+King's crown on a crimson velvet cushion; and, last of all this
+grand procession, came THE KING AND QUEEN OF HEARTS.
+
+  Alice was rather doubtful whether she ought not to lie down on
+her face like the three gardeners, but she could not remember
+ever having heard of such a rule at processions; `and besides,
+what would be the use of a procession,' thought she, `if people
+had all to lie down upon their faces, so that they couldn't see it?'
+So she stood still where she was, and waited.
+
+  When the procession came opposite to Alice, they all stopped
+and looked at her, and the Queen said severely `Who is this?'
+She said it to the Knave of Hearts, who only bowed and smiled in reply.
+
+  `Idiot!' said the Queen, tossing her head impatiently; and,
+turning to Alice, she went on, `What's your name, child?'
+
+  `My name is Alice, so please your Majesty,' said Alice very
+politely; but she added, to herself, `Why, they're only a pack of
+cards, after all.  I needn't be afraid of them!'
+
+  `And who are THESE?' said the Queen, pointing to the three
+gardeners who were lying round the rosetree; for, you see, as
+they were lying on their faces, and the pattern on their backs
+was the same as the rest of the pack, she could not tell whether
+they were gardeners, or soldiers, or courtiers, or three of her
+own children.
+
+  `How should I know?' said Alice, surprised at her own courage.
+`It's no business of MINE.'
+
+  The Queen turned crimson with fury, and, after glaring at her
+for a moment like a wild beast, screamed `Off with her head!
+Off--'
+
+  `Nonsense!' said Alice, very loudly and decidedly, and the
+Queen was silent.
+
+  The King laid his hand upon her arm, and timidly said
+`Consider, my dear:  she is only a child!'
+
+  The Queen turned angrily away from him, and said to the Knave
+`Turn them over!'
+
+  The Knave did so, very carefully, with one foot.
+
+  `Get up!' said the Queen, in a shrill, loud voice, and the
+three gardeners instantly jumped up, and began bowing to the
+King, the Queen, the royal children, and everybody else.
+
+  `Leave off that!' screamed the Queen.  `You make me giddy.'
+And then, turning to the rose-tree, she went on, `What HAVE you
+been doing here?'
+
+  `May it please your Majesty,' said Two, in a very humble tone,
+going down on one knee as he spoke, `we were trying--'
+
+  `I see!' said the Queen, who had meanwhile been examining the
+roses.  `Off with their heads!' and the procession moved on,
+three of the soldiers remaining behind to execute the unfortunate
+gardeners, who ran to Alice for protection.
+
+  `You shan't be beheaded!' said Alice, and she put them into a
+large flower-pot that stood near.  The three soldiers wandered
+about for a minute or two, looking for them, and then quietly
+marched off after the others.
+
+  `Are their heads off?' shouted the Queen.
+
+  `Their heads are gone, if it please your Majesty!' the soldiers
+shouted in reply.
+
+  `That's right!' shouted the Queen.  `Can you play croquet?'
+
+  The soldiers were silent, and looked at Alice, as the question
+was evidently meant for her.
+
+  `Yes!' shouted Alice.
+
+  `Come on, then!' roared the Queen, and Alice joined the
+procession, wondering very much what would happen next.
+
+  `It's--it's a very fine day!' said a timid voice at her side.
+She was walking by the White Rabbit, who was peeping anxiously
+into her face.
+
+  `Very,' said Alice:  `--where's the Duchess?'
+
+  `Hush!  Hush!' said the Rabbit in a low, hurried tone.  He
+looked anxiously over his shoulder as he spoke, and then raised
+himself upon tiptoe, put his mouth close to her ear, and
+whispered `She's under sentence of execution.'
+
+  `What for?' said Alice.
+
+  `Did you say "What a pity!"?' the Rabbit asked.
+
+  `No, I didn't,' said Alice:  `I don't think it's at all a pity.
+I said "What for?"'
+
+  `She boxed the Queen's ears--' the Rabbit began.  Alice gave a
+little scream of laughter.  `Oh, hush!' the Rabbit whispered in a
+frightened tone.  `The Queen will hear you!  You see, she came
+rather late, and the Queen said--'
+
+  `Get to your places!' shouted the Queen in a voice of thunder,
+and people began running about in all directions, tumbling up
+against each other; however, they got settled down in a minute or
+two, and the game began.  Alice thought she had never seen such a
+curious croquet-ground in her life; it was all ridges and
+furrows; the balls were live hedgehogs, the mallets live
+flamingoes, and the soldiers had to double themselves up and to
+stand on their hands and feet, to make the arches.
+
+  The chief difficulty Alice found at first was in managing her
+flamingo:  she succeeded in getting its body tucked away,
+comfortably enough, under her arm, with its legs hanging down,
+but generally, just as she had got its neck nicely straightened
+out, and was going to give the hedgehog a blow with its head, it
+WOULD twist itself round and look up in her face, with such a
+puzzled expression that she could not help bursting out laughing:
+and when she had got its head down, and was going to begin again,
+it was very provoking to find that the hedgehog had unrolled
+itself, and was in the act of crawling away:  besides all this,
+there was generally a ridge or furrow in the way wherever she
+wanted to send the hedgehog to, and, as the doubled-up soldiers
+were always getting up and walking off to other parts of the
+ground, Alice soon came to the conclusion that it was a very
+difficult game indeed.
+
+  The players all played at once without waiting for turns,
+quarrelling all the while, and fighting for the hedgehogs; and in
+a very short time the Queen was in a furious passion, and went
+stamping about, and shouting `Off with his head!' or `Off with
+her head!' about once in a minute.
+
+  Alice began to feel very uneasy:  to be sure, she had not as
+yet had any dispute with the Queen, but she knew that it might
+happen any minute, `and then,' thought she, `what would become of
+me?  They're dreadfully fond of beheading people here; the great
+wonder is, that there's any one left alive!'
+
+  She was looking about for some way of escape, and wondering
+whether she could get away without being seen, when she noticed a
+curious appearance in the air:  it puzzled her very much at
+first, but, after watching it a minute or two, she made it out to
+be a grin, and she said to herself `It's the Cheshire Cat:  now I
+shall have somebody to talk to.'
+
+  `How are you getting on?' said the Cat, as soon as there was
+mouth enough for it to speak with.
+
+  Alice waited till the eyes appeared, and then nodded.  `It's no
+use speaking to it,' she thought, `till its ears have come, or at
+least one of them.'  In another minute the whole head appeared,
+and then Alice put down her flamingo, and began an account of the
+game, feeling very glad she had someone to listen to her.  The
+Cat seemed to think that there was enough of it now in sight, and
+no more of it appeared.
+
+  `I don't think they play at all fairly,' Alice began, in rather
+a complaining tone, `and they all quarrel so dreadfully one can't
+hear oneself speak--and they don't seem to have any rules in
+particular; at least, if there are, nobody attends to them--and
+you've no idea how confusing it is all the things being alive;
+for instance, there's the arch I've got to go through next
+walking about at the other end of the ground--and I should have
+croqueted the Queen's hedgehog just now, only it ran away when it
+saw mine coming!'
+
+  `How do you like the Queen?' said the Cat in a low voice.
+
+  `Not at all,' said Alice:  `she's so extremely--'  Just then
+she noticed that the Queen was close behind her, listening:  so
+she went on, `--likely to win, that it's hardly worth while
+finishing the game.'
+
+  The Queen smiled and passed on.
+
+  `Who ARE you talking to?' said the King, going up to Alice, and
+looking at the Cat's head with great curiosity.
+
+  `It's a friend of mine--a Cheshire Cat,' said Alice:  `allow me
+to introduce it.'
+
+  `I don't like the look of it at all,' said the King:
+`however, it may kiss my hand if it likes.'
+
+  `I'd rather not,' the Cat remarked.
+
+  `Don't be impertinent,' said the King, `and don't look at me
+like that!'  He got behind Alice as he spoke.
+
+  `A cat may look at a king,' said Alice.  `I've read that in
+some book, but I don't remember where.'
+
+  `Well, it must be removed,' said the King very decidedly, and
+he called the Queen, who was passing at the moment, `My dear!  I
+wish you would have this cat removed!'
+
+  The Queen had only one way of settling all difficulties, great
+or small.  `Off with his head!' she said, without even looking
+round.
+
+  `I'll fetch the executioner myself,' said the King eagerly, and
+he hurried off.
+
+  Alice thought she might as well go back, and see how the game
+was going on, as she heard the Queen's voice in the distance,
+screaming with passion.  She had already heard her sentence three
+of the players to be executed for having missed their turns, and
+she did not like the look of things at all, as the game was in
+such confusion that she never knew whether it was her turn or
+not.  So she went in search of her hedgehog.
+
+  The hedgehog was engaged in a fight with another hedgehog,
+which seemed to Alice an excellent opportunity for croqueting one
+of them with the other:  the only difficulty was, that her
+flamingo was gone across to the other side of the garden, where
+Alice could see it trying in a helpless sort of way to fly up
+into a tree.
+
+  By the time she had caught the flamingo and brought it back,
+the fight was over, and both the hedgehogs were out of sight:
+`but it doesn't matter much,' thought Alice, `as all the arches
+are gone from this side of the ground.'  So she tucked it away
+under her arm, that it might not escape again, and went back for
+a little more conversation with her friend.
+
+  When she got back to the Cheshire Cat, she was surprised to
+find quite a large crowd collected round it:  there was a dispute
+going on between the executioner, the King, and the Queen, who
+were all talking at once, while all the rest were quite silent,
+and looked very uncomfortable.
+
+  The moment Alice appeared, she was appealed to by all three to
+settle the question, and they repeated their arguments to her,
+though, as they all spoke at once, she found it very hard indeed
+to make out exactly what they said.
+
+  The executioner's argument was, that you couldn't cut off a
+head unless there was a body to cut it off from:  that he had
+never had to do such a thing before, and he wasn't going to begin
+at HIS time of life.
+
+  The King's argument was, that anything that had a head could be
+beheaded, and that you weren't to talk nonsense.
+
+  The Queen's argument was, that if something wasn't done about
+it in less than no time she'd have everybody executed, all round.
+(It was this last remark that had made the whole party look so
+grave and anxious.)
+
+  Alice could think of nothing else to say but `It belongs to the
+Duchess:  you'd better ask HER about it.'
+
+  `She's in prison,' the Queen said to the executioner:  `fetch
+her here.'  And the executioner went off like an arrow.
+
+   The Cat's head began fading away the moment he was gone, and,
+by the time he had come back with the Duchess, it had entirely
+disappeared; so the King and the executioner ran wildly up and down
+looking for it, while the rest of the party went back to the game.
+
+
+
+                           CHAPTER IX
+
+                     The Mock Turtle's Story
+
+
+  `You can't think how glad I am to see you again, you dear old
+thing!' said the Duchess, as she tucked her arm affectionately
+into Alice's, and they walked off together.
+
+  Alice was very glad to find her in such a pleasant temper, and
+thought to herself that perhaps it was only the pepper that had
+made her so savage when they met in the kitchen.
+
+  `When I'M a Duchess,' she said to herself, (not in a very
+hopeful tone though), `I won't have any pepper in my kitchen AT
+ALL.  Soup does very well without--Maybe it's always pepper that
+makes people hot-tempered,' she went on, very much pleased at
+having found out a new kind of rule, `and vinegar that makes them
+sour--and camomile that makes them bitter--and--and barley-sugar
+and such things that make children sweet-tempered.  I only wish
+people knew that:  then they wouldn't be so stingy about it, you
+know--'
+
+  She had quite forgotten the Duchess by this time, and was a
+little startled when she heard her voice close to her ear.
+`You're thinking about something, my dear, and that makes you
+forget to talk.  I can't tell you just now what the moral of that
+is, but I shall remember it in a bit.'
+
+  `Perhaps it hasn't one,' Alice ventured to remark.
+
+  `Tut, tut, child!' said the Duchess.  `Everything's got a
+moral, if only you can find it.'  And she squeezed herself up
+closer to Alice's side as she spoke.
+
+  Alice did not much like keeping so close to her:  first,
+because the Duchess was VERY ugly; and secondly, because she was
+exactly the right height to rest her chin upon Alice's shoulder,
+and it was an uncomfortably sharp chin.  However, she did not
+like to be rude, so she bore it as well as she could.
+
+  `The game's going on rather better now,' she said, by way of
+keeping up the conversation a little.
+
+  `'Tis so,' said the Duchess:  `and the moral of that is--"Oh,
+'tis love, 'tis love, that makes the world go round!"'
+
+  `Somebody said,' Alice whispered, `that it's done by everybody
+minding their own business!'
+
+  `Ah, well!  It means much the same thing,' said the Duchess,
+digging her sharp little chin into Alice's shoulder as she added,
+`and the moral of THAT is--"Take care of the sense, and the
+sounds will take care of themselves."'
+
+  `How fond she is of finding morals in things!' Alice thought to
+herself.
+
+  `I dare say you're wondering why I don't put my arm round your
+waist,' the Duchess said after a pause:  `the reason is, that I'm
+doubtful about the temper of your flamingo.  Shall I try the
+experiment?'
+
+  `HE might bite,' Alice cautiously replied, not feeling at all
+anxious to have the experiment tried.
+
+  `Very true,' said the Duchess:  `flamingoes and mustard both
+bite.  And the moral of that is--"Birds of a feather flock
+together."'
+
+  `Only mustard isn't a bird,' Alice remarked.
+
+  `Right, as usual,' said the Duchess:  `what a clear way you
+have of putting things!'
+
+  `It's a mineral, I THINK,' said Alice.
+
+  `Of course it is,' said the Duchess, who seemed ready to agree
+to everything that Alice said; `there's a large mustard-mine near
+here.  And the moral of that is--"The more there is of mine, the
+less there is of yours."'
+
+  `Oh, I know!' exclaimed Alice, who had not attended to this
+last remark, `it's a vegetable.  It doesn't look like one, but it
+is.'
+
+  `I quite agree with you,' said the Duchess; `and the moral of
+that is--"Be what you would seem to be"--or if you'd like it put
+more simply--"Never imagine yourself not to be otherwise than
+what it might appear to others that what you were or might have
+been was not otherwise than what you had been would have appeared
+to them to be otherwise."'
+
+  `I think I should understand that better,' Alice said very
+politely, `if I had it written down:  but I can't quite follow it
+as you say it.'
+
+  `That's nothing to what I could say if I chose,' the Duchess
+replied, in a pleased tone.
+
+  `Pray don't trouble yourself to say it any longer than that,'
+said Alice.
+
+  `Oh, don't talk about trouble!' said the Duchess.  `I make you
+a present of everything I've said as yet.'
+
+  `A cheap sort of present!' thought Alice.  `I'm glad they don't
+give birthday presents like that!'  But she did not venture to
+say it out loud.
+
+  `Thinking again?' the Duchess asked, with another dig of her
+sharp little chin.
+
+  `I've a right to think,' said Alice sharply, for she was
+beginning to feel a little worried.
+
+  `Just about as much right,' said the Duchess, `as pigs have to fly;
+and the m--'
+
+  But here, to Alice's great surprise, the Duchess's voice died
+away, even in the middle of her favourite word `moral,' and the
+arm that was linked into hers began to tremble.  Alice looked up,
+and there stood the Queen in front of them, with her arms folded,
+frowning like a thunderstorm.
+
+  `A fine day, your Majesty!' the Duchess began in a low, weak
+voice.
+
+  `Now, I give you fair warning,' shouted the Queen, stamping on
+the ground as she spoke; `either you or your head must be off,
+and that in about half no time!  Take your choice!'
+
+  The Duchess took her choice, and was gone in a moment.
+
+  `Let's go on with the game,' the Queen said to Alice; and Alice
+was too much frightened to say a word, but slowly followed her
+back to the croquet-ground.
+
+  The other guests had taken advantage of the Queen's absence,
+and were resting in the shade:  however, the moment they saw her,
+they hurried back to the game, the Queen merely remarking that a
+moment's delay would cost them their lives.
+
+  All the time they were playing the Queen never left off
+quarrelling with the other players, and shouting `Off with his
+head!' or `Off with her head!'  Those whom she sentenced were
+taken into custody by the soldiers, who of course had to leave
+off being arches to do this, so that by the end of half an hour
+or so there were no arches left, and all the players, except the
+King, the Queen, and Alice, were in custody and under sentence of
+execution.
+
+  Then the Queen left off, quite out of breath, and said to
+Alice, `Have you seen the Mock Turtle yet?'
+
+  `No,' said Alice.  `I don't even know what a Mock Turtle is.'
+
+  `It's the thing Mock Turtle Soup is made from,' said the Queen.
+
+  `I never saw one, or heard of one,' said Alice.
+
+  `Come on, then,' said the Queen, `and he shall tell you his
+history,'
+
+  As they walked off together, Alice heard the King say in a low
+voice, to the company generally, `You are all pardoned.'  `Come,
+THAT'S a good thing!' she said to herself, for she had felt quite
+unhappy at the number of executions the Queen had ordered.
+
+  They very soon came upon a Gryphon, lying fast asleep in the
+sun.  (IF you don't know what a Gryphon is, look at the picture.)
+`Up, lazy thing!' said the Queen, `and take this young lady to
+see the Mock Turtle, and to hear his history.  I must go back and
+see after some executions I have ordered'; and she walked off,
+leaving Alice alone with the Gryphon.  Alice did not quite like
+the look of the creature, but on the whole she thought it would
+be quite as safe to stay with it as to go after that savage
+Queen:  so she waited.
+
+  The Gryphon sat up and rubbed its eyes:  then it watched the
+Queen till she was out of sight:  then it chuckled.  `What fun!'
+said the Gryphon, half to itself, half to Alice.
+
+  `What IS the fun?' said Alice.
+
+  `Why, SHE,' said the Gryphon.  `It's all her fancy, that:  they
+never executes nobody, you know.  Come on!'
+
+  `Everybody says "come on!" here,' thought Alice, as she went
+slowly after it:  `I never was so ordered about in all my life,
+never!'
+
+  They had not gone far before they saw the Mock Turtle in the
+distance, sitting sad and lonely on a little ledge of rock, and,
+as they came nearer, Alice could hear him sighing as if his heart
+would break.  She pitied him deeply.  `What is his sorrow?' she
+asked the Gryphon, and the Gryphon answered, very nearly in the
+same words as before, `It's all his fancy, that:  he hasn't got
+no sorrow, you know.  Come on!'
+
+  So they went up to the Mock Turtle, who looked at them with
+large eyes full of tears, but said nothing.
+
+  `This here young lady,' said the Gryphon, `she wants for to
+know your history, she do.'
+
+  `I'll tell it her,' said the Mock Turtle in a deep, hollow
+tone:  `sit down, both of you, and don't speak a word till I've
+finished.'
+
+  So they sat down, and nobody spoke for some minutes.  Alice
+thought to herself, `I don't see how he can EVEN finish, if he
+doesn't begin.'  But she waited patiently.
+
+  `Once,' said the Mock Turtle at last, with a deep sigh, `I was
+a real Turtle.'
+
+  These words were followed by a very long silence, broken only
+by an occasional exclamation of `Hjckrrh!' from the Gryphon, and
+the constant heavy sobbing of the Mock Turtle.  Alice was very
+nearly getting up and saying, `Thank you, sir, for your
+interesting story,' but she could not help thinking there MUST be
+more to come, so she sat still and said nothing.
+
+  `When we were little,' the Mock Turtle went on at last, more
+calmly, though still sobbing a little now and then, `we went to
+school in the sea.  The master was an old Turtle--we used to call
+him Tortoise--'
+
+  `Why did you call him Tortoise, if he wasn't one?' Alice asked.
+
+  `We called him Tortoise because he taught us,' said the Mock
+Turtle angrily:  `really you are very dull!'
+
+  `You ought to be ashamed of yourself for asking such a simple
+question,' added the Gryphon; and then they both sat silent and
+looked at poor Alice, who felt ready to sink into the earth.  At
+last the Gryphon said to the Mock Turtle, `Drive on, old fellow!
+Don't be all day about it!' and he went on in these words:
+
+  `Yes, we went to school in the sea, though you mayn't believe
+it--'
+
+  `I never said I didn't!' interrupted Alice.
+
+  `You did,' said the Mock Turtle.
+
+  `Hold your tongue!' added the Gryphon, before Alice could speak
+again.  The Mock Turtle went on.
+
+  `We had the best of educations--in fact, we went to school
+every day--'
+
+  `I'VE been to a day-school, too,' said Alice; `you needn't be
+so proud as all that.'
+
+  `With extras?' asked the Mock Turtle a little anxiously.
+
+  `Yes,' said Alice, `we learned French and music.'
+
+  `And washing?' said the Mock Turtle.
+
+  `Certainly not!' said Alice indignantly.
+
+  `Ah! then yours wasn't a really good school,' said the Mock
+Turtle in a tone of great relief.  `Now at OURS they had at the
+end of the bill, "French, music, AND WASHING--extra."'
+
+  `You couldn't have wanted it much,' said Alice; `living at the
+bottom of the sea.'
+
+  `I couldn't afford to learn it.' said the Mock Turtle with a
+sigh.  `I only took the regular course.'
+
+  `What was that?' inquired Alice.
+
+  `Reeling and Writhing, of course, to begin with,' the Mock
+Turtle replied; `and then the different branches of Arithmetic--
+Ambition, Distraction, Uglification, and Derision.'
+
+  `I never heard of "Uglification,"' Alice ventured to say.  `What is it?'
+
+  The Gryphon lifted up both its paws in surprise.  `What!  Never
+heard of uglifying!' it exclaimed.  `You know what to beautify is,
+I suppose?'
+
+  `Yes,' said Alice doubtfully:  `it means--to--make--anything--prettier.'
+
+  `Well, then,' the Gryphon went on, `if you don't know what to
+uglify is, you ARE a simpleton.'
+
+  Alice did not feel encouraged to ask any more questions about
+it, so she turned to the Mock Turtle, and said `What else had you
+to learn?'
+
+  `Well, there was Mystery,' the Mock Turtle replied, counting
+off the subjects on his flappers, `--Mystery, ancient and modern,
+with Seaography:  then Drawling--the Drawling-master was an old
+conger-eel, that used to come once a week:  HE taught us
+Drawling, Stretching, and Fainting in Coils.'
+
+  `What was THAT like?' said Alice.
+
+  `Well, I can't show it you myself,' the Mock Turtle said:  `I'm
+too stiff.  And the Gryphon never learnt it.'
+
+  `Hadn't time,' said the Gryphon:  `I went to the Classics
+master, though.  He was an old crab, HE was.'
+
+  `I never went to him,' the Mock Turtle said with a sigh:  `he
+taught Laughing and Grief, they used to say.'
+
+  `So he did, so he did,' said the Gryphon, sighing in his turn;
+and both creatures hid their faces in their paws.
+
+  `And how many hours a day did you do lessons?' said Alice, in a
+hurry to change the subject.
+
+  `Ten hours the first day,' said the Mock Turtle: `nine the
+next, and so on.'
+
+  `What a curious plan!' exclaimed Alice.
+
+  `That's the reason they're called lessons,' the Gryphon
+remarked:  `because they lessen from day to day.'
+
+  This was quite a new idea to Alice, and she thought it over a
+little before she made her next remark.  `Then the eleventh day
+must have been a holiday?'
+
+  `Of course it was,' said the Mock Turtle.
+
+  `And how did you manage on the twelfth?' Alice went on eagerly.
+
+  `That's enough about lessons,' the Gryphon interrupted in a
+very decided tone:  `tell her something about the games now.'
+
+
+
+                            CHAPTER X
+
+                      The Lobster Quadrille
+
+
+  The Mock Turtle sighed deeply, and drew the back of one flapper
+across his eyes.  He looked at Alice, and tried to speak, but for
+a minute or two sobs choked his voice.  `Same as if he had a bone
+in his throat,' said the Gryphon:  and it set to work shaking him
+and punching him in the back.  At last the Mock Turtle recovered
+his voice, and, with tears running down his cheeks, he went on
+again:--
+
+  `You may not have lived much under the sea--' (`I haven't,' said Alice)--
+`and perhaps you were never even introduced to a lobster--'
+(Alice began to say `I once tasted--' but checked herself hastily,
+and said `No, never') `--so you can have no idea what a delightful
+thing a Lobster Quadrille is!'
+
+  `No, indeed,' said Alice.  `What sort of a dance is it?'
+
+  `Why,' said the Gryphon, `you first form into a line along the sea-shore--'
+
+  `Two lines!' cried the Mock Turtle.  `Seals, turtles, salmon, and so on;
+then, when you've cleared all the jelly-fish out of the way--'
+
+  `THAT generally takes some time,' interrupted the Gryphon.
+
+  `--you advance twice--'
+
+  `Each with a lobster as a partner!' cried the Gryphon.
+
+  `Of course,' the Mock Turtle said:  `advance twice, set to
+partners--'
+
+  `--change lobsters, and retire in same order,' continued the
+Gryphon.
+
+  `Then, you know,' the Mock Turtle went on, `you throw the--'
+
+  `The lobsters!' shouted the Gryphon, with a bound into the air.
+
+  `--as far out to sea as you can--'
+
+  `Swim after them!' screamed the Gryphon.
+
+  `Turn a somersault in the sea!' cried the Mock Turtle,
+capering wildly about.
+
+  `Change lobsters again!' yelled the Gryphon at the top of its voice.
+
+  `Back to land again, and that's all the first figure,' said the
+Mock Turtle, suddenly dropping his voice; and the two creatures,
+who had been jumping about like mad things all this time, sat
+down again very sadly and quietly, and looked at Alice.
+
+  `It must be a very pretty dance,' said Alice timidly.
+
+  `Would you like to see a little of it?' said the Mock Turtle.
+
+  `Very much indeed,' said Alice.
+
+  `Come, let's try the first figure!' said the Mock Turtle to the
+Gryphon.  `We can do without lobsters, you know.  Which shall
+sing?'
+
+  `Oh, YOU sing,' said the Gryphon.  `I've forgotten the words.'
+
+  So they began solemnly dancing round and round Alice, every now
+and then treading on her toes when they passed too close, and
+waving their forepaws to mark the time, while the Mock Turtle
+sang this, very slowly and sadly:--
+
+
+`"Will you walk a little faster?" said a whiting to a snail.
+"There's a porpoise close behind us, and he's treading on my
+ tail.
+See how eagerly the lobsters and the turtles all advance!
+They are waiting on the shingle--will you come and join the
+dance?
+
+Will you, won't you, will you, won't you, will you join the
+dance?
+Will you, won't you, will you, won't you, won't you join the
+dance?
+
+
+"You can really have no notion how delightful it will be
+When they take us up and throw us, with the lobsters, out to
+                                                      sea!"
+But the snail replied "Too far, too far!" and gave a look
+                                                       askance--
+Said he thanked the whiting kindly, but he would not join the
+   dance.
+    Would not, could not, would not, could not, would not join
+        the dance.
+    Would not, could not, would not, could not, could not join
+        the dance.
+
+`"What matters it how far we go?" his scaly friend replied.
+"There is another shore, you know, upon the other side.
+The further off from England the nearer is to France--
+Then turn not pale, beloved snail, but come and join the dance.
+
+    Will you, won't you, will you, won't you, will you join the
+         dance?
+    Will you, won't you, will you, won't you, won't you join the
+         dance?"'
+
+
+
+  `Thank you, it's a very interesting dance to watch,' said
+Alice, feeling very glad that it was over at last:  `and I do so
+like that curious song about the whiting!'
+
+  `Oh, as to the whiting,' said the Mock Turtle, `they--you've
+seen them, of course?'
+
+  `Yes,' said Alice, `I've often seen them at dinn--' she
+checked herself hastily.
+
+  `I don't know where Dinn may be,' said the Mock Turtle, `but
+if you've seen them so often, of course you know what they're
+like.'
+
+  `I believe so,' Alice replied thoughtfully.  `They have their
+tails in their mouths--and they're all over crumbs.'
+
+  `You're wrong about the crumbs,' said the Mock Turtle:
+`crumbs would all wash off in the sea.  But they HAVE their tails
+in their mouths; and the reason is--' here the Mock Turtle
+yawned and shut his eyes.--`Tell her about the reason and all
+that,' he said to the Gryphon.
+
+  `The reason is,' said the Gryphon, `that they WOULD go with
+the lobsters to the dance.  So they got thrown out to sea.  So
+they had to fall a long way.  So they got their tails fast in
+their mouths.  So they couldn't get them out again.  That's all.'
+
+  `Thank you,' said Alice, `it's very interesting.  I never knew
+so much about a whiting before.'
+
+  `I can tell you more than that, if you like,' said the
+Gryphon.  `Do you know why it's called a whiting?'
+
+  `I never thought about it,' said Alice.  `Why?'
+
+  `IT DOES THE BOOTS AND SHOES.' the Gryphon replied very
+solemnly.
+
+  Alice was thoroughly puzzled.  `Does the boots and shoes!' she
+repeated in a wondering tone.
+
+  `Why, what are YOUR shoes done with?' said the Gryphon.  `I
+mean, what makes them so shiny?'
+
+  Alice looked down at them, and considered a little before she
+gave her answer.  `They're done with blacking, I believe.'
+
+  `Boots and shoes under the sea,' the Gryphon went on in a deep
+voice, `are done with a whiting.  Now you know.'
+
+  `And what are they made of?' Alice asked in a tone of great
+curiosity.
+
+  `Soles and eels, of course,' the Gryphon replied rather
+impatiently:  `any shrimp could have told you that.'
+
+  `If I'd been the whiting,' said Alice, whose thoughts were
+still running on the song, `I'd have said to the porpoise, "Keep
+back, please:  we don't want YOU with us!"'
+
+  `They were obliged to have him with them,' the Mock Turtle
+said:  `no wise fish would go anywhere without a porpoise.'
+
+  `Wouldn't it really?' said Alice in a tone of great surprise.
+
+  `Of course not,' said the Mock Turtle:  `why, if a fish came
+to ME, and told me he was going a journey, I should say "With
+what porpoise?"'
+
+  `Don't you mean "purpose"?' said Alice.
+
+  `I mean what I say,' the Mock Turtle replied in an offended
+tone.  And the Gryphon added `Come, let's hear some of YOUR
+adventures.'
+
+  `I could tell you my adventures--beginning from this morning,'
+said Alice a little timidly:  `but it's no use going back to
+yesterday, because I was a different person then.'
+
+  `Explain all that,' said the Mock Turtle.
+
+  `No, no!  The adventures first,' said the Gryphon in an
+impatient tone:  `explanations take such a dreadful time.'
+
+  So Alice began telling them her adventures from the time when
+she first saw the White Rabbit.  She was a little nervous about
+it just at first, the two creatures got so close to her, one on
+each side, and opened their eyes and mouths so VERY wide, but she
+gained courage as she went on.  Her listeners were perfectly
+quiet till she got to the part about her repeating `YOU ARE OLD,
+FATHER WILLIAM,' to the Caterpillar, and the words all coming
+different, and then the Mock Turtle drew a long breath, and said
+`That's very curious.'
+
+  `It's all about as curious as it can be,' said the Gryphon.
+
+  `It all came different!' the Mock Turtle repeated
+thoughtfully.  `I should like to hear her try and repeat
+something now.  Tell her to begin.'  He looked at the Gryphon as
+if he thought it had some kind of authority over Alice.
+
+  `Stand up and repeat "'TIS THE VOICE OF THE SLUGGARD,"' said
+the Gryphon.
+
+  `How the creatures order one about, and make one repeat
+lessons!' thought Alice; `I might as well be at school at once.'
+However, she got up, and began to repeat it, but her head was so
+full of the Lobster Quadrille, that she hardly knew what she was
+saying, and the words came very queer indeed:--
+
+    `'Tis the voice of the Lobster; I heard him declare,
+    "You have baked me too brown, I must sugar my hair."
+    As a duck with its eyelids, so he with his nose
+    Trims his belt and his buttons, and turns out his toes.'
+
+              [later editions continued as follows
+    When the sands are all dry, he is gay as a lark,
+    And will talk in contemptuous tones of the Shark,
+    But, when the tide rises and sharks are around,
+    His voice has a timid and tremulous sound.]
+
+  `That's different from what I used to say when I was a child,'
+said the Gryphon.
+
+  `Well, I never heard it before,' said the Mock Turtle; `but it
+sounds uncommon nonsense.'
+
+  Alice said nothing; she had sat down with her face in her
+hands, wondering if anything would EVER happen in a natural way
+again.
+
+  `I should like to have it explained,' said the Mock Turtle.
+
+  `She can't explain it,' said the Gryphon hastily.  `Go on with
+the next verse.'
+
+  `But about his toes?' the Mock Turtle persisted.  `How COULD
+he turn them out with his nose, you know?'
+
+  `It's the first position in dancing.' Alice said; but was
+dreadfully puzzled by the whole thing, and longed to change the
+subject.
+
+  `Go on with the next verse,' the Gryphon repeated impatiently:
+`it begins "I passed by his garden."'
+
+  Alice did not dare to disobey, though she felt sure it would
+all come wrong, and she went on in a trembling voice:--
+
+    `I passed by his garden, and marked, with one eye,
+    How the Owl and the Panther were sharing a pie--'
+
+        [later editions continued as follows
+    The Panther took pie-crust, and gravy, and meat,
+    While the Owl had the dish as its share of the treat.
+    When the pie was all finished, the Owl, as a boon,
+    Was kindly permitted to pocket the spoon:
+    While the Panther received knife and fork with a growl,
+    And concluded the banquet--]
+
+  `What IS the use of repeating all that stuff,' the Mock Turtle
+interrupted, `if you don't explain it as you go on?  It's by far
+the most confusing thing I ever heard!'
+
+  `Yes, I think you'd better leave off,' said the Gryphon:  and
+Alice was only too glad to do so.
+
+  `Shall we try another figure of the Lobster Quadrille?' the
+Gryphon went on.  `Or would you like the Mock Turtle to sing you
+a song?'
+
+  `Oh, a song, please, if the Mock Turtle would be so kind,'
+Alice replied, so eagerly that the Gryphon said, in a rather
+offended tone, `Hm!  No accounting for tastes!  Sing her
+"Turtle Soup," will you, old fellow?'
+
+  The Mock Turtle sighed deeply, and began, in a voice sometimes
+choked with sobs, to sing this:--
+
+
+    `Beautiful Soup, so rich and green,
+    Waiting in a hot tureen!
+    Who for such dainties would not stoop?
+    Soup of the evening, beautiful Soup!
+    Soup of the evening, beautiful Soup!
+        Beau--ootiful Soo--oop!
+        Beau--ootiful Soo--oop!
+    Soo--oop of the e--e--evening,
+        Beautiful, beautiful Soup!
+
+    `Beautiful Soup!  Who cares for fish,
+    Game, or any other dish?
+    Who would not give all else for two
+    Pennyworth only of beautiful Soup?
+    Pennyworth only of beautiful Soup?
+        Beau--ootiful Soo--oop!
+        Beau--ootiful Soo--oop!
+    Soo--oop of the e--e--evening,
+        Beautiful, beauti--FUL SOUP!'
+
+  `Chorus again!' cried the Gryphon, and the Mock Turtle had
+just begun to repeat it, when a cry of `The trial's beginning!'
+was heard in the distance.
+
+  `Come on!' cried the Gryphon, and, taking Alice by the hand,
+it hurried off, without waiting for the end of the song.
+
+  `What trial is it?' Alice panted as she ran; but the Gryphon
+only answered `Come on!' and ran the faster, while more and more
+faintly came, carried on the breeze that followed them, the
+melancholy words:--
+
+    `Soo--oop of the e--e--evening,
+        Beautiful, beautiful Soup!'
+
+
+
+                           CHAPTER XI
+
+                      Who Stole the Tarts?
+
+
+  The King and Queen of Hearts were seated on their throne when
+they arrived, with a great crowd assembled about them--all sorts
+of little birds and beasts, as well as the whole pack of cards:
+the Knave was standing before them, in chains, with a soldier on
+each side to guard him; and near the King was the White Rabbit,
+with a trumpet in one hand, and a scroll of parchment in the
+other.  In the very middle of the court was a table, with a large
+dish of tarts upon it:  they looked so good, that it made Alice
+quite hungry to look at them--`I wish they'd get the trial done,'
+she thought, `and hand round the refreshments!'  But there seemed
+to be no chance of this, so she began looking at everything about
+her, to pass away the time.
+
+  Alice had never been in a court of justice before, but she had
+read about them in books, and she was quite pleased to find that
+she knew the name of nearly everything there.  `That's the
+judge,' she said to herself, `because of his great wig.'
+
+  The judge, by the way, was the King; and as he wore his crown
+over the wig, (look at the frontispiece if you want to see how he
+did it,) he did not look at all comfortable, and it was certainly
+not becoming.
+
+  `And that's the jury-box,' thought Alice, `and those twelve
+creatures,' (she was obliged to say `creatures,' you see, because
+some of them were animals, and some were birds,) `I suppose they
+are the jurors.'  She said this last word two or three times over
+to herself, being rather proud of it:  for she thought, and
+rightly too, that very few little girls of her age knew the
+meaning of it at all.  However, `jury-men' would have done just
+as well.
+
+  The twelve jurors were all writing very busily on slates.
+`What are they doing?'  Alice whispered to the Gryphon.  `They
+can't have anything to put down yet, before the trial's begun.'
+
+  `They're putting down their names,' the Gryphon whispered in
+reply, `for fear they should forget them before the end of the
+trial.'
+
+  `Stupid things!' Alice began in a loud, indignant voice, but
+she stopped hastily, for the White Rabbit cried out, `Silence in
+the court!' and the King put on his spectacles and looked
+anxiously round, to make out who was talking.
+
+  Alice could see, as well as if she were looking over their
+shoulders, that all the jurors were writing down `stupid things!'
+on their slates, and she could even make out that one of them
+didn't know how to spell `stupid,' and that he had to ask his
+neighbour to tell him.  `A nice muddle their slates'll be in
+before the trial's over!' thought Alice.
+
+  One of the jurors had a pencil that squeaked.  This of course,
+Alice could not stand, and she went round the court and got
+behind him, and very soon found an opportunity of taking it
+away.  She did it so quickly that the poor little juror (it was
+Bill, the Lizard) could not make out at all what had become of
+it; so, after hunting all about for it, he was obliged to write
+with one finger for the rest of the day; and this was of very
+little use, as it left no mark on the slate.
+
+  `Herald, read the accusation!' said the King.
+
+  On this the White Rabbit blew three blasts on the trumpet, and
+then unrolled the parchment scroll, and read as follows:--
+
+    `The Queen of Hearts, she made some tarts,
+          All on a summer day:
+      The Knave of Hearts, he stole those tarts,
+          And took them quite away!'
+
+  `Consider your verdict,' the King said to the jury.
+
+  `Not yet, not yet!' the Rabbit hastily interrupted.  `There's
+a great deal to come before that!'
+
+  `Call the first witness,' said the King; and the White Rabbit
+blew three blasts on the trumpet, and called out, `First
+witness!'
+
+  The first witness was the Hatter.  He came in with a teacup in
+one hand and a piece of bread-and-butter in the other.  `I beg
+pardon, your Majesty,' he began, `for bringing these in:  but I
+hadn't quite finished my tea when I was sent for.'
+
+  `You ought to have finished,' said the King.  `When did you
+begin?'
+
+  The Hatter looked at the March Hare, who had followed him into
+the court, arm-in-arm with the Dormouse.  `Fourteenth of March, I
+think it was,' he said.
+
+  `Fifteenth,' said the March Hare.
+
+  `Sixteenth,' added the Dormouse.
+
+  `Write that down,' the King said to the jury, and the jury
+eagerly wrote down all three dates on their slates, and then
+added them up, and reduced the answer to shillings and pence.
+
+  `Take off your hat,' the King said to the Hatter.
+
+  `It isn't mine,' said the Hatter.
+
+  `Stolen!' the King exclaimed, turning to the jury, who
+instantly made a memorandum of the fact.
+
+  `I keep them to sell,' the Hatter added as an explanation;
+`I've none of my own.  I'm a hatter.'
+
+  Here the Queen put on her spectacles, and began staring at the
+Hatter, who turned pale and fidgeted.
+
+  `Give your evidence,' said the King; `and don't be nervous, or
+I'll have you executed on the spot.'
+
+  This did not seem to encourage the witness at all:  he kept
+shifting from one foot to the other, looking uneasily at the
+Queen, and in his confusion he bit a large piece out of his
+teacup instead of the bread-and-butter.
+
+  Just at this moment Alice felt a very curious sensation, which
+puzzled her a good deal until she made out what it was:  she was
+beginning to grow larger again, and she thought at first she
+would get up and leave the court; but on second thoughts she
+decided to remain where she was as long as there was room for
+her.
+
+  `I wish you wouldn't squeeze so.' said the Dormouse, who was
+sitting next to her.  `I can hardly breathe.'
+
+  `I can't help it,' said Alice very meekly:  `I'm growing.'
+
+  `You've no right to grow here,' said the Dormouse.
+
+  `Don't talk nonsense,' said Alice more boldly:  `you know
+you're growing too.'
+
+  `Yes, but I grow at a reasonable pace,' said the Dormouse:
+`not in that ridiculous fashion.'  And he got up very sulkily
+and crossed over to the other side of the court.
+
+  All this time the Queen had never left off staring at the
+Hatter, and, just as the Dormouse crossed the court, she said to
+one of the officers of the court, `Bring me the list of the
+singers in the last concert!' on which the wretched Hatter
+trembled so, that he shook both his shoes off.
+
+  `Give your evidence,' the King repeated angrily, `or I'll have
+you executed, whether you're nervous or not.'
+
+  `I'm a poor man, your Majesty,' the Hatter began, in a
+trembling voice, `--and I hadn't begun my tea--not above a week
+or so--and what with the bread-and-butter getting so thin--and
+the twinkling of the tea--'
+
+  `The twinkling of the what?' said the King.
+
+  `It began with the tea,' the Hatter replied.
+
+  `Of course twinkling begins with a T!' said the King sharply.
+`Do you take me for a dunce?  Go on!'
+
+  `I'm a poor man,' the Hatter went on, `and most things
+twinkled after that--only the March Hare said--'
+
+  `I didn't!' the March Hare interrupted in a great hurry.
+
+  `You did!' said the Hatter.
+
+  `I deny it!' said the March Hare.
+
+  `He denies it,' said the King:  `leave out that part.'
+
+  `Well, at any rate, the Dormouse said--' the Hatter went on,
+looking anxiously round to see if he would deny it too:  but the
+Dormouse denied nothing, being fast asleep.
+
+  `After that,' continued the Hatter, `I cut some more bread-
+and-butter--'
+
+  `But what did the Dormouse say?' one of the jury asked.
+
+  `That I can't remember,' said the Hatter.
+
+  `You MUST remember,' remarked the King, `or I'll have you
+executed.'
+
+  The miserable Hatter dropped his teacup and bread-and-butter,
+and went down on one knee.  `I'm a poor man, your Majesty,' he
+began.
+
+  `You're a very poor speaker,' said the King.
+
+  Here one of the guinea-pigs cheered, and was immediately
+suppressed by the officers of the court.  (As that is rather a
+hard word, I will just explain to you how it was done.  They had
+a large canvas bag, which tied up at the mouth with strings:
+into this they slipped the guinea-pig, head first, and then sat
+upon it.)
+
+  `I'm glad I've seen that done,' thought Alice.  `I've so often
+read in the newspapers, at the end of trials, "There was some
+attempts at applause, which was immediately suppressed by the
+officers of the court," and I never understood what it meant
+till now.'
+
+  `If that's all you know about it, you may stand down,'
+continued the King.
+
+  `I can't go no lower,' said the Hatter:  `I'm on the floor, as
+it is.'
+
+  `Then you may SIT down,' the King replied.
+
+  Here the other guinea-pig cheered, and was suppressed.
+
+  `Come, that finished the guinea-pigs!' thought Alice.  `Now we
+shall get on better.'
+
+  `I'd rather finish my tea,' said the Hatter, with an anxious
+look at the Queen, who was reading the list of singers.
+
+  `You may go,' said the King, and the Hatter hurriedly left the
+court, without even waiting to put his shoes on.
+
+  `--and just take his head off outside,' the Queen added to one
+of the officers:  but the Hatter was out of sight before the
+officer could get to the door.
+
+  `Call the next witness!' said the King.
+
+  The next witness was the Duchess's cook.  She carried the
+pepper-box in her hand, and Alice guessed who it was, even before
+she got into the court, by the way the people near the door began
+sneezing all at once.
+
+  `Give your evidence,' said the King.
+
+  `Shan't,' said the cook.
+
+  The King looked anxiously at the White Rabbit, who said in a
+low voice, `Your Majesty must cross-examine THIS witness.'
+
+  `Well, if I must, I must,' the King said, with a melancholy
+air, and, after folding his arms and frowning at the cook till
+his eyes were nearly out of sight, he said in a deep voice, `What
+are tarts made of?'
+
+  `Pepper, mostly,' said the cook.
+
+  `Treacle,' said a sleepy voice behind her.
+
+  `Collar that Dormouse,' the Queen shrieked out.  `Behead that
+Dormouse!  Turn that Dormouse out of court!  Suppress him!  Pinch
+him!  Off with his whiskers!'
+
+  For some minutes the whole court was in confusion, getting the
+Dormouse turned out, and, by the time they had settled down
+again, the cook had disappeared.
+
+  `Never mind!' said the King, with an air of great relief.
+`Call the next witness.'  And he added in an undertone to the
+Queen, `Really, my dear, YOU must cross-examine the next witness.
+It quite makes my forehead ache!'
+
+  Alice watched the White Rabbit as he fumbled over the list,
+feeling very curious to see what the next witness would be like,
+`--for they haven't got much evidence YET,' she said to herself.
+Imagine her surprise, when the White Rabbit read out, at the top
+of his shrill little voice, the name `Alice!'
+
+
+
+                           CHAPTER XII
+
+                        Alice's Evidence
+
+
+  `Here!' cried Alice, quite forgetting in the flurry of the
+moment how large she had grown in the last few minutes, and she
+jumped up in such a hurry that she tipped over the jury-box with
+the edge of her skirt, upsetting all the jurymen on to the heads
+of the crowd below, and there they lay sprawling about, reminding
+her very much of a globe of goldfish she had accidentally upset
+the week before.
+
+  `Oh, I BEG your pardon!' she exclaimed in a tone of great
+dismay, and began picking them up again as quickly as she could,
+for the accident of the goldfish kept running in her head, and
+she had a vague sort of idea that they must be collected at once
+and put back into the jury-box, or they would die.
+
+  `The trial cannot proceed,' said the King in a very grave
+voice, `until all the jurymen are back in their proper places--
+ALL,' he repeated with great emphasis, looking hard at Alice as
+he said do.
+
+  Alice looked at the jury-box, and saw that, in her haste, she
+had put the Lizard in head downwards, and the poor little thing
+was waving its tail about in a melancholy way, being quite unable
+to move.  She soon got it out again, and put it right; `not that
+it signifies much,' she said to herself; `I should think it
+would be QUITE as much use in the trial one way up as the other.'
+
+  As soon as the jury had a little recovered from the shock of
+being upset, and their slates and pencils had been found and
+handed back to them, they set to work very diligently to write
+out a history of the accident, all except the Lizard, who seemed
+too much overcome to do anything but sit with its mouth open,
+gazing up into the roof of the court.
+
+  `What do you know about this business?' the King said to
+Alice.
+
+  `Nothing,' said Alice.
+
+  `Nothing WHATEVER?' persisted the King.
+
+  `Nothing whatever,' said Alice.
+
+  `That's very important,' the King said, turning to the jury.
+They were just beginning to write this down on their slates, when
+the White Rabbit interrupted:  `UNimportant, your Majesty means,
+of course,' he said in a very respectful tone, but frowning and
+making faces at him as he spoke.
+
+  `UNimportant, of course, I meant,' the King hastily said, and
+went on to himself in an undertone, `important--unimportant--
+unimportant--important--' as if he were trying which word
+sounded best.
+
+  Some of the jury wrote it down `important,' and some
+`unimportant.'  Alice could see this, as she was near enough to
+look over their slates; `but it doesn't matter a bit,' she
+thought to herself.
+
+  At this moment the King, who had been for some time busily
+writing in his note-book, cackled out `Silence!' and read out
+from his book, `Rule Forty-two.  ALL PERSONS MORE THAN A MILE
+HIGH TO LEAVE THE COURT.'
+
+  Everybody looked at Alice.
+
+  `I'M not a mile high,' said Alice.
+
+  `You are,' said the King.
+
+  `Nearly two miles high,' added the Queen.
+
+  `Well, I shan't go, at any rate,' said Alice:  `besides,
+that's not a regular rule:  you invented it just now.'
+
+  `It's the oldest rule in the book,' said the King.
+
+  `Then it ought to be Number One,' said Alice.
+
+  The King turned pale, and shut his note-book hastily.
+`Consider your verdict,' he said to the jury, in a low, trembling
+voice.
+
+  `There's more evidence to come yet, please your Majesty,' said
+the White Rabbit, jumping up in a great hurry; `this paper has
+just been picked up.'
+
+  `What's in it?' said the Queen.
+
+  `I haven't opened it yet,' said the White Rabbit, `but it seems
+to be a letter, written by the prisoner to--to somebody.'
+
+  `It must have been that,' said the King, `unless it was
+written to nobody, which isn't usual, you know.'
+
+  `Who is it directed to?' said one of the jurymen.
+
+  `It isn't directed at all,' said the White Rabbit; `in fact,
+there's nothing written on the OUTSIDE.'  He unfolded the paper
+as he spoke, and added `It isn't a letter, after all:  it's a set
+of verses.'
+
+  `Are they in the prisoner's handwriting?' asked another of
+the jurymen.
+
+  `No, they're not,' said the White Rabbit, `and that's the
+queerest thing about it.'  (The jury all looked puzzled.)
+
+  `He must have imitated somebody else's hand,' said the King.
+(The jury all brightened up again.)
+
+  `Please your Majesty,' said the Knave, `I didn't write it, and
+they can't prove I did:  there's no name signed at the end.'
+
+  `If you didn't sign it,' said the King, `that only makes the
+matter worse.  You MUST have meant some mischief, or else you'd
+have signed your name like an honest man.'
+
+  There was a general clapping of hands at this:  it was the
+first really clever thing the King had said that day.
+
+  `That PROVES his guilt,' said the Queen.
+
+  `It proves nothing of the sort!' said Alice.  `Why, you don't
+even know what they're about!'
+
+  `Read them,' said the King.
+
+  The White Rabbit put on his spectacles.  `Where shall I begin,
+please your Majesty?' he asked.
+
+  `Begin at the beginning,' the King said gravely, `and go on
+till you come to the end:  then stop.'
+
+  These were the verses the White Rabbit read:--
+
+        `They told me you had been to her,
+          And mentioned me to him:
+        She gave me a good character,
+          But said I could not swim.
+
+        He sent them word I had not gone
+          (We know it to be true):
+        If she should push the matter on,
+          What would become of you?
+
+        I gave her one, they gave him two,
+          You gave us three or more;
+        They all returned from him to you,
+          Though they were mine before.
+
+        If I or she should chance to be
+          Involved in this affair,
+        He trusts to you to set them free,
+          Exactly as we were.
+
+        My notion was that you had been
+          (Before she had this fit)
+        An obstacle that came between
+          Him, and ourselves, and it.
+
+        Don't let him know she liked them best,
+          For this must ever be
+        A secret, kept from all the rest,
+          Between yourself and me.'
+
+  `That's the most important piece of evidence we've heard yet,'
+said the King, rubbing his hands; `so now let the jury--'
+
+  `If any one of them can explain it,' said Alice, (she had
+grown so large in the last few minutes that she wasn't a bit
+afraid of interrupting him,) `I'll give him sixpence.  _I_ don't
+believe there's an atom of meaning in it.'
+
+  The jury all wrote down on their slates, `SHE doesn't believe
+there's an atom of meaning in it,' but none of them attempted to
+explain the paper.
+
+  `If there's no meaning in it,' said the King, `that saves a
+world of trouble, you know, as we needn't try to find any.  And
+yet I don't know,' he went on, spreading out the verses on his
+knee, and looking at them with one eye; `I seem to see some
+meaning in them, after all.  "--SAID I COULD NOT SWIM--" you
+can't swim, can you?' he added, turning to the Knave.
+
+  The Knave shook his head sadly.  `Do I look like it?' he said.
+(Which he certainly did NOT, being made entirely of cardboard.)
+
+  `All right, so far,' said the King, and he went on muttering
+over the verses to himself:  `"WE KNOW IT TO BE TRUE--" that's
+the jury, of course-- "I GAVE HER ONE, THEY GAVE HIM TWO--" why,
+that must be what he did with the tarts, you know--'
+
+  `But, it goes on "THEY ALL RETURNED FROM HIM TO YOU,"' said
+Alice.
+
+  `Why, there they are!' said the King triumphantly, pointing to
+the tarts on the table.  `Nothing can be clearer than THAT.
+Then again--"BEFORE SHE HAD THIS FIT--"  you never had fits, my
+dear, I think?' he said to the Queen.
+
+  `Never!' said the Queen furiously, throwing an inkstand at the
+Lizard as she spoke.  (The unfortunate little Bill had left off
+writing on his slate with one finger, as he found it made no
+mark; but he now hastily began again, using the ink, that was
+trickling down his face, as long as it lasted.)
+
+  `Then the words don't FIT you,' said the King, looking round
+the court with a smile.  There was a dead silence.
+
+  `It's a pun!' the King added in an offended tone, and
+everybody laughed, `Let the jury consider their verdict,' the
+King said, for about the twentieth time that day.
+
+  `No, no!' said the Queen.  `Sentence first--verdict afterwards.'
+
+  `Stuff and nonsense!' said Alice loudly.  `The idea of having
+the sentence first!'
+
+  `Hold your tongue!' said the Queen, turning purple.
+
+  `I won't!' said Alice.
+
+  `Off with her head!' the Queen shouted at the top of her voice.
+Nobody moved.
+
+  `Who cares for you?' said Alice, (she had grown to her full
+size by this time.)  `You're nothing but a pack of cards!'
+
+  At this the whole pack rose up into the air, and came flying
+down upon her:  she gave a little scream, half of fright and half
+of anger, and tried to beat them off, and found herself lying on
+the bank, with her head in the lap of her sister, who was gently
+brushing away some dead leaves that had fluttered down from the
+trees upon her face.
+
+  `Wake up, Alice dear!' said her sister; `Why, what a long
+sleep you've had!'
+
+  `Oh, I've had such a curious dream!' said Alice, and she told
+her sister, as well as she could remember them, all these strange
+Adventures of hers that you have just been reading about; and
+when she had finished, her sister kissed her, and said, `It WAS a
+curious dream, dear, certainly:  but now run in to your tea; it's
+getting late.'  So Alice got up and ran off, thinking while she
+ran, as well she might, what a wonderful dream it had been.
+
+  But her sister sat still just as she left her, leaning her
+head on her hand, watching the setting sun, and thinking of
+little Alice and all her wonderful Adventures, till she too began
+dreaming after a fashion, and this was her dream:--
+
+  First, she dreamed of little Alice herself, and once again the
+tiny hands were clasped upon her knee, and the bright eager eyes
+were looking up into hers--she could hear the very tones of her
+voice, and see that queer little toss of her head to keep back
+the wandering hair that WOULD always get into her eyes--and
+still as she listened, or seemed to listen, the whole place
+around her became alive the strange creatures of her little
+sister's dream.
+
+  The long grass rustled at her feet as the White Rabbit hurried
+by--the frightened Mouse splashed his way through the
+neighbouring pool--she could hear the rattle of the teacups as
+the March Hare and his friends shared their never-ending meal,
+and the shrill voice of the Queen ordering off her unfortunate
+guests to execution--once more the pig-baby was sneezing on the
+Duchess's knee, while plates and dishes crashed around it--once
+more the shriek of the Gryphon, the squeaking of the Lizard's
+slate-pencil, and the choking of the suppressed guinea-pigs,
+filled the air, mixed up with the distant sobs of the miserable
+Mock Turtle.
+
+  So she sat on, with closed eyes, and half believed herself in
+Wonderland, though she knew she had but to open them again, and
+all would change to dull reality--the grass would be only
+rustling in the wind, and the pool rippling to the waving of the
+reeds--the rattling teacups would change to tinkling sheep-
+bells, and the Queen's shrill cries to the voice of the shepherd
+boy--and the sneeze of the baby, the shriek of the Gryphon, and
+all the other queer noises, would change (she knew) to the
+confused clamour of the busy farm-yard--while the lowing of the
+cattle in the distance would take the place of the Mock Turtle's
+heavy sobs.
+
+  Lastly, she pictured to herself how this same little sister of
+hers would, in the after-time, be herself a grown woman; and how
+she would keep, through all her riper years, the simple and
+loving heart of her childhood:  and how she would gather about
+her other little children, and make THEIR eyes bright and eager
+with many a strange tale, perhaps even with the dream of
+Wonderland of long ago:  and how she would feel with all their
+simple sorrows, and find a pleasure in all their simple joys,
+remembering her own child-life, and the happy summer days.
+
+                             THE END
\ No newline at end of file
diff --git a/Ovinger/Oving7/example_file1.txt b/Ovinger/Oving7/example_file1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..066910e10ebd9f426a1165c08a41f6c6b3deb94d
--- /dev/null
+++ b/Ovinger/Oving7/example_file1.txt
@@ -0,0 +1,5 @@
+Dette er en eksempelfil.
+
+Her kan man skrive hva man vil.
+
+Men helst ikke for mange hatefulle ytringer.
\ No newline at end of file
diff --git a/Ovinger/Oving7/min_modul.py b/Ovinger/Oving7/min_modul.py
new file mode 100644
index 0000000000000000000000000000000000000000..470ad1ab70fabae749941c95b34e32f964667b83
--- /dev/null
+++ b/Ovinger/Oving7/min_modul.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+# In[5]:
+
+class Stack:
+    def __init__(self, *args):
+        self.items = [arg for arg in args]
+    
+    def push(self, item):
+        self.items = [item] + self.items
+    
+    def pop(self):
+        if self.items:
+            return self.items.pop()
+        else:
+            return None
+    
+    def peek(self):
+        if self.items:
+            return self.items[0]
+        else:
+            return None
+
+    def is_empty(self):
+        return self.items == []
+    
+    def size(self):
+        return len(self.items)
+    
+    def __str__(self):
+        return str(self.items)
+    
+    def __repr__(self):
+        return str(self.items)
+    
+    def __iter__(self):
+        return iter(self.items)
+    
+    def __next__(self):
+        return next(self.items)
diff --git a/Ovinger/Oving7/my_file.txt b/Ovinger/Oving7/my_file.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Ovinger/Oving7/numbers.txt b/Ovinger/Oving7/numbers.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bd7af828c3207ab1bb55392f156c5a90df3e098
--- /dev/null
+++ b/Ovinger/Oving7/numbers.txt
@@ -0,0 +1,36 @@
+7
+4
+9
+4
+1
+4
+4
+3
+1
+5
+3
+5
+5
+7
+9
+3
+2
+9
+7
+3
+5
+2
+5
+4
+2
+6
+5
+2
+3
+8
+1
+4
+5
+7
+9
+4
\ No newline at end of file
diff --git a/Ovinger/Oving7/poenggrenser_2011.csv b/Ovinger/Oving7/poenggrenser_2011.csv
new file mode 100644
index 0000000000000000000000000000000000000000..88a422cf6afcebabc158aab2686e561e89ce2423
--- /dev/null
+++ b/Ovinger/Oving7/poenggrenser_2011.csv
@@ -0,0 +1,925 @@
+"ATH 255196 Kristendom religion og livssyn årsstudium","Alle"
+"ATH 255418 Interkulturell forståelse årsstudium","Alle"
+"ATH 255437 Musikk","Alle"
+"ATH 255480 Teologi","Alle"
+"ATH 255482 Kristendom religion og livssyn","Alle"
+"ATH 255752 Psykologi årsstudium","Alle"
+"ATH 255777 Musikk årsstudium","Alle"
+"ATH 255869 Interkulturell forståelse","Alle"
+"ATH 255876 Psykologi med religion og helse","Alle"
+"ATH 255936 Praktisk teologi","Alle"
+"AHO 189030 Arkitekt",12.3
+"AHO 189343 Industridesign",11.7
+"BDH 250050 Sykepleierutdanning",45.5
+"MF 190196 Kristendom/RLE","Alle"
+"MF 190242 Samfunnsfag","Alle"
+"MF 190418 Interkulturell kommunikasjon","Alle"
+"MF 190480 Teologi profesjonsstudium","Alle"
+"MF 190482 Religion kultur og samfunn","Alle"
+"MF 190927 Ungdom kultur og tro","Alle"
+"MF 190934 Lektor- og adjunktprogram","Alle"
+"MF 190936 Teologi","Alle"
+"DHS 251050 Sykepleierutdanning Oslo",48.3
+"DHS 251060 Vernepleierutdanning Rogaland",41.8
+"DHS 251080 Sosialt arbeid Oslo",49.1
+"DHS 251081 Sosialt arbeid deltid Oslo",42.4
+"DHS 251700 Ergoterapeututdanning Rogaland",32.6
+"DMMH 253130 Førskolelærerutdanning",36.3
+"DMMH 253131 Førskolelærer estetisk linje",39.1
+"DMMH 253132 Førskolelærer natur- og friluftslinje.",44
+"DMMH 253133 Førskolelærer deltid",46.2
+"DMMH 253529 Førskolelærer interkulturell linje","Alle"
+"FIH 258480 Teologi og misjon","Alle"
+"FIH 258626 Kristendom religion- og livssynskunnskap","Alle"
+"FIH 258777 Musikk","Alle"
+"HDH 252050 Sykepleierutdanning",46.1
+"HIAK 202050 Sykepleierutdanning",45.3
+"HIAK 202060 Vernepleierutdanning",47.4
+"HIAK 202061 Vernepleierutdanning deltid",39.3
+"HIAK 202063 Vernepleierutdanning deltid Bærum",39.9
+"HIAK 202082 Yrkesfaglærerutd. i medier og kommunikasjon","Alle"
+"HIAK 202105 Yrkesfaglærerutd. i service og samferdsel","Alle"
+"HIAK 202106 Yrkesfaglærerutd. i helse- og sosialfag deltid","Alle"
+"HIAK 202108 Yrkesfaglærerutd. i design-og håndverksfag deltid","Alle"
+"HIAK 202109 Yrkesfaglærerutd. i bygg og anleggsteknikk","Alle"
+"HIAK 202123 Yrkesfaglærerutd. i helse- og sosialfag","Alle"
+"HIAK 202124 Yrkesfaglærerutd. i restaurant- og matfag","Alle"
+"HIAK 202126 Yrkesfaglærerutd. i design-og håndverksfag","Alle"
+"HIAK 202127 Yrkesfaglærerutd. i elektrofag","Alle"
+"HIAK 202129 Yrkesfaglærerutd. i teknikk og industriell prod.","Alle"
+"HIAK 202405 Produktdesign","Alle"
+"HIAK 202408 Samfunnsernæring",49.7
+"HIAK 202696 Trafikklærerutdanning","Alle"
+"HIAK 202876 Læringspsykologi med vekt på adferdsanalyse",48.4
+"HIAK 202896 Husøkonomi og serviceledelse","Alle"
+"HIAK 202897 Kostøkonomi ernæring og ledelse","Alle"
+"HIB 203003 Ingeniør bygg","Alle"
+"HIB 203004 Ingeniør data","Alle"
+"HIB 203006 Ingeniør elkraftteknikk","Alle"
+"HIB 203009 Ingeniør kjemi","Alle"
+"HIB 203011 Ingeniør marinteknikk",43.8
+"HIB 203012 Ingeniør maskinteknikk",39.8
+"HIB 203017 Ingeniør automatisering","Alle"
+"HIB 203024 Ingeniør elektronikk","Alle"
+"HIB 203028 Ingeniør kommunikasjonssystemer","Alle"
+"HIB 203045 Ingeniør produksjonsteknikk","Alle"
+"HIB 203050 Sykepleierutdanning",41.2
+"HIB 203060 Vernepleierutdanning",38.2
+"HIB 203080 Sosialt arbeid",45.8
+"HIB 203096 Ingeniør undervannsteknologi",44.8
+"HIB 203130 Førskolelærerutdanning","Alle"
+"HIB 203132 Førskolelærerutd. med vekt på kunstfag","Alle"
+"HIB 203133 Førskolelærerutd m/vekt på natur og friluftsliv",34.8
+"HIB 203203 Folkehelsearbeid",45.5
+"HIB 203369 Økonomi og administrasjon",46.6
+"HIB 203395 Informasjonsteknologi","Alle"
+"HIB 203440 Idrett faglærerutdanning",44.7
+"HIB 203466 Tegnspråk og tolking","Alle"
+"HIB 203547 Grunnskolelærer 1.-7. trinn m/kroppsøving",40.5
+"HIB 203548 Grunnskolelærer 1.-7. trinn med musikk","Alle"
+"HIB 203550 Grunnskolelærer 1.-7. trinn m/samfunnsfag","Alle"
+"HIB 203551 Grunnskolelærer 1.-7. trinn med engelsk","Alle"
+"HIB 203557 Grunnskolelærer 1.-7. trinn m/naturfag","Alle"
+"HIB 203559 Grunnskolelærer 1.-7. trinn med RLE","Alle"
+"HIB 203599 Grunnskolelærer 1.-7. trinn med mat og helse",44.3
+"HIB 203618 Drama",39.2
+"HIB 203655 Grunnskolelærer 5.-10. trinn med matematikk",43.8
+"HIB 203657 Grunnskolelærer 5.-10. trinn med samfunnsfag",44.7
+"HIB 203658 Grunnskolelærer 5.-10. trinn med norsk",40.4
+"HIB 203659 Grunnskolelærer 5.-10. trinn med mat og helse",43.5
+"HIB 203660 Grunnskolelærer 5.-10. trinn med musikk","Alle"
+"HIB 203667 Musikk",46.3
+"HIB 203700 Ergoterapeututdanning",42.5
+"HIB 203701 Radiografutdanning",36.2
+"HIB 203702 Bioingeniørutdanning",42.3
+"HIB 203703 Fysioterapeututdanning",49.7
+"HIB 203753 Landmåling og eiendomsdesign",35.6
+"HIB 203822 Ingeniør energiteknologi",45.5
+"HIBU 205004 Ingeniør data  Kongsberg","Alle"
+"HIBU 205005 Ingeniør elektro Kongsberg","Alle"
+"HIBU 205012 Ingeniør maskin Kongsberg","Alle"
+"HIBU 205050 Sykepleier Drammen",30.4
+"HIBU 205155 Lysdesign Drammen","Alle"
+"HIBU 205160 Økonomi og administrasjon1-årig Kongsberg","Alle"
+"HIBU 205162 Økonomi og administrasjon 1-årig Hønefoss.","Alle"
+"HIBU 205246 Juss årsstudium Hønefoss",43.8
+"HIBU 205251 Visuell kommunikasjon Drammen",43.8
+"HIBU 205291 Økonomi og ledelse - siviløkonom Kongsberg","Alle"
+"HIBU 205317 Reiselivsledelse Hønefoss","Alle"
+"HIBU 205345 Økonomi og ledelse - siviløkonom Hønefoss","Alle"
+"HIBU 205370 Dynamisk webdesign Hønefoss","Alle"
+"HIBU 205395 IT og informasjonssystemer Hønefoss","Alle"
+"HIBU 205404 Økonomi og administrasjon Kongsberg",29.1
+"HIBU 205414 Økonomi og administrasjon Hønefoss","Alle"
+"HIBU 205526 Juss Hønefoss",45.2
+"HIBU 205547 Grunnskolelærer 1.-7. trinn Drammen","Alle"
+"HIBU 205620 IT og informasjonssystemer 1-årig Hønefoss","Alle"
+"HIBU 205623 Engelsk Hønefoss","Alle"
+"HIBU 205651 Grunnskolelærer 5.-10. trinn med språkfag Drammen","Alle"
+"HIBU 205655 Grunnskolelærer 5.-10. trinn med realfag Drammen","Alle"
+"HIBU 205657 Grunnskolelærer 5.-10. trinn med samfunnsfag Dr.","Alle"
+"HIBU 205672 Norsk Hønefoss","Alle"
+"HIBU 205701 Radiograf Drammen",30.8
+"HIBU 205867 Juss og ledelse Hønefoss",41.8
+"HIBU 205881 Statsvitenskap  Drammen",36.5
+"HIBU 205894 Optometri Kongsberg","Alle"
+"HIG 207003 Ingeniør bygg","Alle"
+"HIG 207004 Ingeniør data","Alle"
+"HIG 207005 Ingeniør elektro","Alle"
+"HIG 207012 Ingeniør maskin","Alle"
+"HIG 207046 Medieteknologi","Alle"
+"HIG 207050 Sykepleierutdanning",30.7
+"HIG 207051 Sykepleierutdanning deltid","Alle"
+"HIG 207052 Sykepleierutdanning deltid Gudbrandsdal","Alle"
+"HIG 207053 Sykepleierutdanning deltid Valdres","Alle"
+"HIG 207054 Sykepleierutdanning deltid Hadeland","Alle"
+"HIG 207098 Teknologidesign årsstudium deltid","Alle"
+"HIG 207099 Landmåling årsstudium fleksibel","Alle"
+"HIG 207102 Geografiske informasjonssystemer (GIS) års fleks","Alle"
+"HIG 207136 Mediemanagement årsstudium","Alle"
+"HIG 207149 Mediedesign",42
+"HIG 207160 Økonomi og ledelse årsstudium","Alle"
+"HIG 207188 Medie- og informasjonsteknologi årsstudium","Alle"
+"HIG 207248 Landmåling årsstudium","Alle"
+"HIG 207264 Medieproduksjon","Alle"
+"HIG 207369 Økonomi og ledelse","Alle"
+"HIG 207374 Drift av nettverk og datasystemer","Alle"
+"HIG 207395 Programvareutvikling","Alle"
+"HIG 207396 Geografiske informasjonssystemer (GIS) årsstudium","Alle"
+"HIG 207404 Økonomi og ledelse fleksibel","Alle"
+"HIG 207406 Geomatikk","Alle"
+"HIG 207429 Informasjonssikkerhet","Alle"
+"HIG 207602 Teknologidesign årsstudium","Alle"
+"HIG 207604 Medieproduksjon årsstudium","Alle"
+"HIG 207673 Spillprogrammering","Alle"
+"HIG 207701 Radiografutdanning","Alle"
+"HIG 207824 Teknologidesign og ledelse","Alle"
+"HIG 207838 Mediemanagement","Alle"
+"HIH 208035 Økonomi og ledelse","Alle"
+"HIH 208050 Sykepleierutdanning",38.2
+"HIH 208051 Sykepleierutdanning deltid","Alle"
+"HIH 208060 Vernepleierutdanning","Alle"
+"HIH 208070 Barnevernspedagogutdanning",35.2
+"HIH 208071 Barnevernspedagogutdanning deltid - Tromsø",40.7
+"HIH 208164 Økonomi og ledelse årsstudium","Alle"
+"HIH 208318 Regnskap og revisjon","Alle"
+"HIH 208350 Handel service og logistikk","Alle"
+"HIM 211050 Sykepleierutdanning studiegruppe Molde",30.3
+"HIM 211056 Sykepleierutdanning studiegruppe Kristiansund","Alle"
+"HIM 211060 Vernepleierutdanning",42.4
+"HIM 211164 Bedriftsøkonomi","Alle"
+"HIM 211185 Idrett",39.6
+"HIM 211189 Informasjonsbehandling","Alle"
+"HIM 211238 Statsvitenskap","Alle"
+"HIM 211246 Jus",39.1
+"HIM 211292 Logistikk og Supply Chain Management","Alle"
+"HIM 211318 Revisjon","Alle"
+"HIM 211369 Økonomi og administrasjon","Alle"
+"HIM 211370 IT og logistikk","Alle"
+"HIM 211404 Siviløkonom 1. avdeling",41
+"HIM 211432 Internasjonal logistikk Ã…lesund","Alle"
+"HIM 211488 Sport Management idrettsledelse",39.4
+"HIM 211627 Petroleumslogistikk deltid","Alle"
+"HIM 211841 Jus og administrasjon","Alle"
+"HIM 211866 Petroleumslogistikk Kristiansund",44.9
+"HIN 212003 Ingeniør Bygg","Alle"
+"HIN 212004 Ingeniør Datateknikk","Alle"
+"HIN 212005 Ingeniør Industriell Elektronikk","Alle"
+"HIN 212006 Ingeniør Elkraftteknikk","Alle"
+"HIN 212018 Ingeniør Prosessteknologi","Alle"
+"HIN 212027 Ingeniør Satelitteknologi","Alle"
+"HIN 212034 Ingeniør Industriteknikk","Alle"
+"HIN 212040 Ingeniør første studieår Alta","Alle"
+"HIN 212050 Sykepleierutdanning","Alle"
+"HIN 212075 Ingeniør Bygg nettbasert","Alle"
+"HIN 212076 Ingeniør Industriteknikk nettbasert","Alle"
+"HIN 212077 Ingeniør Prosessteknologi nettbasert","Alle"
+"HIN 212078 Ingeniør Datateknikk nettbasert","Alle"
+"HIN 212079 Ingeniør Elektro første år nettbasert","Alle"
+"HIN 212410 Økonomi og administrasjon","Alle"
+"HIN 212761 Elektroteknikk","Alle"
+"HIN 212804 Data/IT","Alle"
+"HIN 212805 Ingeniørdesign","Alle"
+"HIN 212806 Integrert bygningsteknologi","Alle"
+"HIN 212811 Industriell teknologi","Alle"
+"HIN 212814 Satelitteknologi","Alle"
+"HIN 212872 Internasjonal beredskap","Alle"
+"HINE 213130 Førskolelærer","Alle"
+"HINE 213131 Førskolelærerutdanning deltid samlingsbasert","Alle"
+"HINE 213170 Engelsk årsstudium 5-10","Alle"
+"HINE 213505 Kunst og håndverk 1-7","Alle"
+"HINE 213547 Grunnskolelærer  1-7","Alle"
+"HINE 213602 Design og bruk av digitale medier årsstudium Mo","Alle"
+"HINE 213620 Informasjonsteknologi årsstudium Mo i Rana","Alle"
+"HINE 213623 Engelsk årsstudium 1-7","Alle"
+"HINE 213642 Kunst og håndverk 5-10","Alle"
+"HINE 213651 Grunnskolelærer 5-10","Alle"
+"HINE 213655 Grunnskolelærer 5-10 Narvik","Alle"
+"HINE 213666 Naturfag samlingsbasert 5-10","Alle"
+"HINE 213667 Kreativt musikkarbeid årsstudium 5-10","Alle"
+"HINE 213680 Samfunnsfag samlingsbasert 5-10","Alle"
+"HINE 213777 Kreativt musikkarbeid årsstudium 1-7","Alle"
+"HINE 213796 Drama og teater årsstudium","Alle"
+"HINT 214050 Sykepleierutdanning Levanger",40.9
+"HINT 214058 Sykepleierutdanning Namsos","Alle"
+"HINT 214060 Vernepleierutdanning Namsos","Alle"
+"HINT 214130 Førskolelærerutdanning Levanger","Alle"
+"HINT 214185 Idrett Levanger",41.8
+"HINT 214240 Sosiologi Steinkjer","Alle"
+"HINT 214318 Revisjon Steinkjer","Alle"
+"HINT 214321 Husdyrfag velferd og produksjon Steinkjer","Alle"
+"HINT 214323 Utmarksforvaltning Steinkjer","Alle"
+"HINT 214369 Økonomi og administrasjon Steinkjer","Alle"
+"HINT 214388 Naturforvaltning Steinkjer","Alle"
+"HINT 214396 Geografi nettbasert Steinkjer","Alle"
+"HINT 214419 Kommunal økonomi og ledelse Steinkjer","Alle"
+"HINT 214421 Husdyrvelferd Steinkjer årsstudium","Alle"
+"HINT 214430 Multimedieteknologi Steinkjer","Alle"
+"HINT 214440 Kroppsøving og idrettsfag faglærerut. Levanger",45
+"HINT 214468 Grønn næringsutvikling Steinkjer","Alle"
+"HINT 214516 Regnskap Steinkjer","Alle"
+"HINT 214547 Grunnskolelærerutdanning 1.-7. trinn Levanger","Alle"
+"HINT 214605 Friluftsliv Levanger","Alle"
+"HINT 214623 Engelsk Levanger","Alle"
+"HINT 214639 Faglærerutd i musikk - rytmisk profil Levanger","Alle"
+"HINT 214642 Kunst og håndverk Levanger","Alle"
+"HINT 214649 Kroppsøving Levanger","Alle"
+"HINT 214651 Grunnskolelærerutdanning 5.-10. trinn Levanger","Alle"
+"HINT 214667 Musikk Levanger","Alle"
+"HINT 214673 Spill- og opplevelsesteknologi Steinkjer","Alle"
+"HINT 214680 Samfunnsfag Levanger","Alle"
+"HINT 214696 Trafikklærerutdanning Stjørdal",42.1
+"HINT 214749 Farmasiutdanning Namsos","Alle"
+"HSF 216005 Ingeniør elektro Førde","Alle"
+"HSF 216050 Sykepleierutdanning Førde start høst","Alle"
+"HSF 216052 Sykepleierutdanning Førde start vår","Alle"
+"HSF 216053 Sykepleierutdanning samlingsbasert deltid Førde","Alle"
+"HSF 216060 Vernepleierutdanning","Alle"
+"HSF 216070 Barnevernspedagogutdanning","Alle"
+"HSF 216080 Sosialt arbeid",32.2
+"HSF 216130 Førskolelærerutdanning","Alle"
+"HSF 216131 Førskolelærerutdanning samlingsbasert deltid","Alle"
+"HSF 216164 Bedriftsøkonomi","Alle"
+"HSF 216170 Engelsk","Alle"
+"HSF 216185 Idrett",38.2
+"HSF 216242 Samfunnsfag","Alle"
+"HSF 216246 Jus",34.6
+"HSF 216302 Friluftsliv","Alle"
+"HSF 216310 Landskapsplanlegging med landskapsarkitektur","Alle"
+"HSF 216330 Reiselivsledelse","Alle"
+"HSF 216351 Ungdomssosiologi","Alle"
+"HSF 216368 Eiendomsmegling","Alle"
+"HSF 216369 Økonomi og administrasjon","Alle"
+"HSF 216373 Naturfag","Alle"
+"HSF 216440 Idrett fysisk aktivitet og helse",40.7
+"HSF 216469 Geologi og geofare","Alle"
+"HSF 216481 Historie","Alle"
+"HSF 216485 Idrett og kroppsøving",32.1
+"HSF 216547 Grunnskulelærarutdanning 1.-7. trinn","Alle"
+"HSF 216548 Grunnskulelærarutdanning 1.-7. trinn saml/deltid","Alle"
+"HSF 216651 Grunnskulelærarutdanning 5.-10. trinn","Alle"
+"HSF 216754 Reiseliv","Alle"
+"HSF 216835 Fornybar energi","Alle"
+"HSF 216927 Sosiologi - ungdomssosiologi","Alle"
+"STAF 234196 Kristendom årsstudium","Alle"
+"STAF 234437 Musikk menighet og ledelse","Alle"
+"STAF 234480 Teologi og ledelse","Alle"
+"HSH 218002 Ingeniør brannsikkerhet Haugesund","Alle"
+"HSH 218012 Ingeniør maskin Haugesund","Alle"
+"HSH 218047 Ingeniør kvalitet HMS Haugesund","Alle"
+"HSH 218050 Sykepleierutdanning Stord",31.3
+"HSH 218056 Sykepleierutdanning Haugesund",31.5
+"HSH 218130 Førskolelærerutd. ordinær linje Stord","Alle"
+"HSH 218134 Førskolelærerutd. natur og friluftslinje Stord","Alle"
+"HSH 218157 Faglærerutdanning i musikk Stord","Alle"
+"HSH 218353 Maritim utdanning nautikk Haugesund",37.3
+"HSH 218369 Økonomi og administrasjon Haugesund","Alle"
+"HSH 218505 Kunst og håndverk Stord","Alle"
+"HSH 218547 Grunnskolelærerutdanning 1.-7. trinn","Alle"
+"HSH 218623 Engelsk Stord","Alle"
+"HSH 218649 Idrett/Kroppsøving Stord",34.4
+"HSH 218651 Grunnskolelærerutdanning 5.-10. trinn","Alle"
+"HSH 218680 Samfunnsfag Stord","Alle"
+"HIT 220003 Ingeniør bygg","Alle"
+"HIT 220006 Ingeniør elkraft","Alle"
+"HIT 220012 Ingeniør maskin","Alle"
+"HIT 220035 Økonomi og administrasjon 2 år Bø","Alle"
+"HIT 220050 Sykepleierutdanning",32.2
+"HIT 220051 Sykepleierutdanning deltid 4 år","Alle"
+"HIT 220060 Vernepleierutdanning",32.1
+"HIT 220061 Vernepleierutdanning deltid","Alle"
+"HIT 220070 Barnevern i et flerkulturelt samfunn",32.8
+"HIT 220090 Ingeniør informatikk og automatisering","Alle"
+"HIT 220130 Førskolelærerutdanning Notodden","Alle"
+"HIT 220131 Førskolelærer deltid - samlingsbasert  Notodden","Alle"
+"HIT 220132 Førskolelærerutdanning Drammen","Alle"
+"HIT 220133 Førskolelærerutdanning Porsgrunn","Alle"
+"HIT 220140 Faglærer i kroppsøving og idrettsfag Notodden","Alle"
+"HIT 220150 Faglærer i formgiving kunst og håndv. Notodden","Alle"
+"HIT 220164 Bedriftsøkonomi årsstudium Bø","Alle"
+"HIT 220167 Bedriftsøkonomi Porsgrunn",33.6
+"HIT 220170 Engelsk årsstudium Bø","Alle"
+"HIT 220172 Friluftsliv kultur og naturveiledning årsstud Bø","Alle"
+"HIT 220179 Historie årsstudium Bø","Alle"
+"HIT 220185 Idrett årsstudium Bø",34.3
+"HIT 220187 Informasjonsbehandling årsstudium  Bø","Alle"
+"HIT 220188 Informasjonsbehandling årsstudium Porsgrunn","Alle"
+"HIT 220210 Norsk årsstudium Bø","Alle"
+"HIT 220273 Kultur-arrangering formidling og forv. 2-Ã¥rig","Alle"
+"HIT 220302 Friluftsliv kultur- og naturveiledning  Bø","Alle"
+"HIT 220308 Kultur-arrangering formidling og forvaltning Bø","Alle"
+"HIT 220317 Reiseliv Bø","Alle"
+"HIT 220318 Revisjon Bø","Alle"
+"HIT 220359 Internasjonal markedsføring Bø","Alle"
+"HIT 220368 Eiendomsmegling Bø",37.3
+"HIT 220369 Økonomi og administrasjon Bø","Alle"
+"HIT 220388 Økologi og naturressurser Bø","Alle"
+"HIT 220395 Informatikk Bø","Alle"
+"HIT 220400 Idéhistorie Bø","Alle"
+"HIT 220440 Idrettsvitenskap Bø","Alle"
+"HIT 220441 Visuelle kunstfag og design Notodden","Alle"
+"HIT 220442 Folkekunst Rauland","Alle"
+"HIT 220443 Folkemusikk Rauland","Alle"
+"HIT 220447 Natur og friluftsliv  Bø","Alle"
+"HIT 220448 Forurensing og miljø Bø","Alle"
+"HIT 220449 Informasjonssystemer Bø","Alle"
+"HIT 220463 Humanistiske fag Bø","Alle"
+"HIT 220505 Leire – kunst og design 1 Notodden","Alle"
+"HIT 220532 Form og design Notodden","Alle"
+"HIT 220547 Grunnskolelærer 1.-7. trinn Notodden","Alle"
+"HIT 220548 Grunnskolelærer 1.-7. trinn Porsgrunn","Alle"
+"HIT 220550 Grunnskolelærer 1.-7. trinn nettbasert","Alle"
+"HIT 220551 Grunnskolelærer 1.-7. trinn desentralisert","Alle"
+"HIT 220602 Digital mediedesign Notodden","Alle"
+"HIT 220605 Natur og friluftsliv årsstudium Bø","Alle"
+"HIT 220613 Historie deltid nett- og samlingsbasert","Alle"
+"HIT 220628 Folkekunst årsstudium Rauland","Alle"
+"HIT 220629 Folkemusikk årsstudium Rauland","Alle"
+"HIT 220630 Kunst og håndverk årsstudium Notodden","Alle"
+"HIT 220637 Tegning - bilde årsstudium Notodden","Alle"
+"HIT 220649 Kroppsøving og idrettsfag årsstudium Notodden","Alle"
+"HIT 220651 Grunnskolelærer 5.-10. trinn Porsgrunn","Alle"
+"HIT 220655 Grunnskolelærer 5.-10. Notodden og desentralisert","Alle"
+"HIT 220657 Grunnskolelærer 5.-10. trinn nettbasert","Alle"
+"HIT 220672 Norsk deltid nett og samlingsbasert Bø","Alle"
+"HIT 220688 Ingeniør gass- og energiteknologi","Alle"
+"HIT 220895 Innovasjon og entreprenørskap Bø","Alle"
+"HIT 220912 Spansk Bø","Alle"
+"HIVE 222004 Ingeniør datateknikk","Alle"
+"HIVE 222005 Ingeniør elektronikk","Alle"
+"HIVE 222012 Ingeniør produktdesign","Alle"
+"HIVE 222017 Ingeniør elektro-automasjon","Alle"
+"HIVE 222044 Skipsfart og logistikk","Alle"
+"HIVE 222050 Sykepleierutdanning",33.5
+"HIVE 222130 Førskolelærerutdanning","Alle"
+"HIVE 222131 Førskolelærerutdanning deltid","Alle"
+"HIVE 222164 Bedriftsøkonomi",33.8
+"HIVE 222170 Engelsk","Alle"
+"HIVE 222179 Historie årsstudium","Alle"
+"HIVE 222205 Matematikk","Alle"
+"HIVE 222240 Sosiologi årsstudium",35.6
+"HIVE 222242 Samfunnsfag","Alle"
+"HIVE 222318 Revisjon","Alle"
+"HIVE 222351 Ungdomskunnskap","Alle"
+"HIVE 222352 Maritim teknisk driftsledelse","Alle"
+"HIVE 222353 Nautikk","Alle"
+"HIVE 222369 Økonomi og administrasjon",36.7
+"HIVE 222412 Informasjonssystemer","Alle"
+"HIVE 222418 Internasjonal forståelse og samarbeid","Alle"
+"HIVE 222440 Idrett ernæring og helse",39.6
+"HIVE 222446 Mat og helse","Alle"
+"HIVE 222453 Informasjonssystemer og IT-ledelse","Alle"
+"HIVE 222481 Historie","Alle"
+"HIVE 222547 Grunnskolelærerutdanning 1.-7. trinn","Alle"
+"HIVE 222548 Grunnskolelærerutdanning 1.- 7. trinn trainee","Alle"
+"HIVE 222620 IKT i læring","Alle"
+"HIVE 222626 Religion livssyn og etikk","Alle"
+"HIVE 222642 Kunst og håndverk","Alle"
+"HIVE 222649 Idrett årsstudium",40.8
+"HIVE 222651 Grunnskolelærerutdanning 5.-10. trinn","Alle"
+"HIVE 222666 Naturfag","Alle"
+"HIVE 222667 Musikk","Alle"
+"HIVE 222672 Norsk","Alle"
+"HIVE 222796 Teater for barn og unge","Alle"
+"HIVE 222823 Ingeniør mikro- og nanoteknologi","Alle"
+"HIVE 222880 Sosiologi","Alle"
+"HIVE 222912 Spansk","Alle"
+"HIØ 224003 Ingeniør bygg Fredrikstad","Alle"
+"HIØ 224004 Ingeniør data Halden","Alle"
+"HIØ 224005 Ingeniør elektro Fredrikstad","Alle"
+"HIØ 224012 Ingeniør maskin Fredrikstad","Alle"
+"HIØ 224035 Økonomi og administrasjon Halden","Alle"
+"HIØ 224050 Sykepleierutdanning Fredrikstad",32.9
+"HIØ 224051 Sykepleierutdanning deltid Fredrikstad","Alle"
+"HIØ 224060 Vernepleierutdanning Fredrikstad",31.5
+"HIØ 224061 Vernepleierutdanning deltid Fredrikstad","Alle"
+"HIØ 224070 Barnevern Fredrikstad",37.9
+"HIØ 224080 Sosialt arbeid Fredrikstad",39.3
+"HIØ 224130 Førskolelærerutdanning Halden","Alle"
+"HIØ 224131 Førskolelærerutdanning deltid Halden","Alle"
+"HIØ 224170 Engelsk Halden","Alle"
+"HIØ 224210 Norsk Halden","Alle"
+"HIØ 224238 Statsvitenskap Halden","Alle"
+"HIØ 224244 Tysk Halden","Alle"
+"HIØ 224270 Informatikk -design/utvikl. av IT-systemer Halden","Alle"
+"HIØ 224318 Revisjon Halden","Alle"
+"HIØ 224398 Bedriftsøkonomi Halden","Alle"
+"HIØ 224453 Informasjonssystemer Halden","Alle"
+"HIØ 224455 Internasjonal kommunikasjon Halden","Alle"
+"HIØ 224474 Samfunn språk og kultur Halden","Alle"
+"HIØ 224505 Kunst og håndverk Halden","Alle"
+"HIØ 224547 Grunnskolelærerutdanning 1.-7. trinn Halden","Alle"
+"HIØ 224610 Fransk Halden","Alle"
+"HIØ 224620 Informasjonsteknologi Halden","Alle"
+"HIØ 224626 Religion livssyn og etikk Halden","Alle"
+"HIØ 224649 Kroppsøving og idrett Halden",33.5
+"HIØ 224651 Grunnskolelærerutdanning 5.-10. trinn Halden","Alle"
+"HIØ 224661 Matematikk Halden","Alle"
+"HIØ 224666 Naturfag Halden","Alle"
+"HIØ 224667 Musikk Halden","Alle"
+"HIØ 224680 Samfunnsfag Halden","Alle"
+"HIØ 224702 Bioingeniørutdanning Fredrikstad","Alle"
+"HIØ 224824 Ingeniør industriell design Fredrikstad","Alle"
+"HIØ 224845 Digital medieproduksjon Halden","Alle"
+"HIØ 224895 Innovasjon og prosjektledelse Fredrikstad",32.4
+"HIØ 224900 Arbeids- og velferdsfag Fredrikstad","Alle"
+"HIØ 224912 Spansk Halden","Alle"
+"HIÅ 225003 Ingeniør bygg","Alle"
+"HIÅ 225004 Ingeniør data","Alle"
+"HIÅ 225017 Ingeniør automatiseringsteknikk","Alle"
+"HIÅ 225045 Ingeniør produkt-  og systemdesign","Alle"
+"HIÃ… 225050 Sykepleierutdanning",29.1
+"HIÅ 225160 Shipping og økonomi","Alle"
+"HIÅ 225162 Økonomi og ledelse",36.5
+"HIÅ 225184 Medisinsk og marint årsstudium","Alle"
+"HIÃ… 225299 Bachelor i Marine- og biologiske fag","Alle"
+"HIÃ… 225353 Maritim utdanning nautikk",43.2
+"HIÅ 225369 Økonomi og administrasjon",39.1
+"HIÃ… 225410 Handels- og Serviceledelse",34.1
+"HIÃ… 225432 Shipping og logistikk",35.8
+"HIÅ 225473 Eksportmarkedsføring",35.5
+"HIÅ 225699 Ingeniør skipsdesign","Alle"
+"HIÅ 225702 Bioingeniør","Alle"
+"HIÅ 225895 Innovasjonsledelse og entreprenørskap",37.4
+"HD 232050 Sykepleierutdanning",42.7
+"LDH 230050 Sykepleierutdanning",43
+"MHS 256196 Kristendomskunnskap/RLE","Alle"
+"MHS 256418 Interkult. kommunikasjon og globalt samarb.","Alle"
+"MHS 256480 Teologi","Alle"
+"MHS 256482 Religion og interkulturell kommunikasjon","Alle"
+"MHS 256680 Samfunnsfag","Alle"
+"MHS 256771 Teologi profesjonsstudium","Alle"
+"NHH 191345 Siviløkonomutdanningen",55.2
+"NTNU 194104 Afrikastudier årsstudium",33.8
+"NTNU 194109 Yrkesfaglærerutd. bygg- og anleggsteknikk","Alle"
+"NTNU 194123 Yrkesfaglærerutdanning helse- og sosialfag","Alle"
+"NTNU 194129 Yrkesfaglærerutdanning teknikk og industriell prod","Alle"
+"NTNU 194170 Engelsk årsstudium",42.9
+"NTNU 194171 Rådgiving og voksnes læring","Alle"
+"NTNU 194174 Fransk årsstudium","Alle"
+"NTNU 194179 Historie årsstudium",40
+"NTNU 194184 Biologi og kjemi årsstudium",51.1
+"NTNU 194188 Informatikk årsstudium","Alle"
+"NTNU 194200 Kunsthistorie","Alle"
+"NTNU 194205 Matematikk og statistikk årsstudium",47.6
+"NTNU 194210 Nordisk årsstudium","Alle"
+"NTNU 194220 Pedagogikk årsstudium",39.2
+"NTNU 194238 Statsvitenskap årsstudium",46.1
+"NTNU 194239 Samfunnsøkonomi årsstudium",45
+"NTNU 194240 Sosiologi årsstudium",44.1
+"NTNU 194242 Studier av kunnskap teknologi og samfunn (STS)",41.8
+"NTNU 194244 Tysk årsstudium","Alle"
+"NTNU 194272 Kunsthistorie årsstudium","Alle"
+"NTNU 194284 Geografi årsstudium",39.9
+"NTNU 194285 Samfunnskunnskap årsstudium",42.2
+"NTNU 194294 Latin","Alle"
+"NTNU 194324 Emnestudier samfunnsvitenskap",41.1
+"NTNU 194327 Biologi",49.4
+"NTNU 194366 Filosofi årsstudium",41.9
+"NTNU 194367 Sosialantropologi årsstudium",43
+"NTNU 194395 Informatikk",44.3
+"NTNU 194437 Musikkvitenskap","Alle"
+"NTNU 194438 Geografi",30
+"NTNU 194439 Drama og teater",41.2
+"NTNU 194440 Bevegelsesvitenskap",44.7
+"NTNU 194456 Allmenn litteraturvitenskap","Alle"
+"NTNU 194457 Lingvistikk","Alle"
+"NTNU 194459 Antikkens kultur","Alle"
+"NTNU 194476 Musikkteknologi",45.6
+"NTNU 194478 Arkeologi",39.1
+"NTNU 194479 Filosofi",34.8
+"NTNU 194481 Historie",33.5
+"NTNU 194486 Samfunns- og idrettsvitenskap",42.4
+"NTNU 194615 Allmenn litteraturvitenskap årsstudium","Alle"
+"NTNU 194626 Kristendomsk. med religions- og livssynsk.","Alle"
+"NTNU 194646 Film- og videoproduksjon",46.6
+"NTNU 194649 Kroppsøving og idrett årsstudium",51.8
+"NTNU 194684 Lektorutdanning i historie",49.5
+"NTNU 194685 Lektorutdanning språkfag/engelsk",44.3
+"NTNU 194686 Lektorutdanning språkfag/fransk","Alle"
+"NTNU 194687 Lektorutdanning språkfag/nordisk",45.8
+"NTNU 194689 Lektorutdanning språkfag/tysk","Alle"
+"NTNU 194715 Emnestudier humaniora årsstudium","Alle"
+"NTNU 194740 Medisin",58.4
+"NTNU 194752 Psykologi årsstudium",48
+"NTNU 194755 Materialteknologi",51.9
+"NTNU 194756 Arkitekt",52.7
+"NTNU 194757 Petroleumsfag",51.9
+"NTNU 194759 Bygg- og miljøteknikk",51.9
+"NTNU 194760 Datateknikk",50.9
+"NTNU 194761 Elektronikk",47.8
+"NTNU 194763 Fysikk og matematikk",56.5
+"NTNU 194764 Industriell kjemi og bioteknologi",52.6
+"NTNU 194765 Marin teknikk",53.1
+"NTNU 194766 Produktutvikling og produksjon",52.8
+"NTNU 194767 Industriell økonomi og teknologiledelse",58.9
+"NTNU 194768 Industriell design",54.4
+"NTNU 194769 Energi og miljø",54.6
+"NTNU 194770 Kommunikasjonsteknologi",49.6
+"NTNU 194786 Europastudier med fremmedspråk spansk","Alle"
+"NTNU 194793 Europastudier med fremmedspråk fransk","Alle"
+"NTNU 194795 Europastudier med fremmedspråk tysk","Alle"
+"NTNU 194798 Teknisk kybernetikk",51.5
+"NTNU 194818 Samfunnsøkonomi master",46.6
+"NTNU 194843 Lektorutdanning i realfag",48.6
+"NTNU 194847 Filmvitenskap","Alle"
+"NTNU 194851 Medievitenskap",38.5
+"NTNU 194852 Pedagogikk",35
+"NTNU 194855 Bioteknologi master",52.6
+"NTNU 194857 Fysikk",52.7
+"NTNU 194859 Geologi",47.2
+"NTNU 194860 Kjemi",49.2
+"NTNU 194862 Matematiske fag",49.8
+"NTNU 194868 Afrikastudier","Alle"
+"NTNU 194870 Europastudier med fremmedspråk engelsk",42.4
+"NTNU 194875 Politisk økonomi",44.4
+"NTNU 194876 Psykologi",46.7
+"NTNU 194879 Sosialantropologi",37.5
+"NTNU 194880 Sosiologi",39.3
+"NTNU 194881 Statsvitenskap",44.6
+"NTNU 194887 Engelsk",35.6
+"NTNU 194888 Fransk","Alle"
+"NTNU 194889 Nordisk","Alle"
+"NTNU 194890 Tysk","Alle"
+"NTNU 194898 Samfunnsøkonomi",43.9
+"NTNU 194901 Språklig kommunikasjon","Alle"
+"NTNU 194904 Kulturminneforvaltning","Alle"
+"NTNU 194905 Ingeniørvitenskap og IKT",52
+"NTNU 194910 Religionsvitenskap årsstudium","Alle"
+"NTNU 194912 Spansk årsstudium",36.9
+"NTNU 194929 Religionsvitenskap","Alle"
+"NTNU 194930 Fonetikk","Alle"
+"NTNU 194932 Klassisk språk og litteratur","Alle"
+"NTNU 194934 Lektorutdanning i geografi",46.3
+"NTNU 194937 Nanoteknologi",61.9
+"NTNU 194941 Psykologi profesjonsstudiet",55.2
+"NTNU 194945 Lektorutdanning i samfunnsfag",48.4
+"NTNU 194946 Tekniske geofag",51.5
+"NLA 254130 Førskolelærerutdanning","Alle"
+"NLA 254182 Menighetspedagogikk","Alle"
+"NLA 254196 KRLE årsstudium","Alle"
+"NLA 254220 Pedagogikk årsstudium",34.6
+"NLA 254418 Interkulturell forståelse vekt på Sør-Amerika",36.3
+"NLA 254480 Teologi","Alle"
+"NLA 254482 Kristendomskunnskap","Alle"
+"NLA 254485 Kristendom og idrett","Alle"
+"NLA 254547 Grunnskolelærerutdanning 1.-7. trinn","Alle"
+"NLA 254651 Grunnskolelærerutdanning 5.-10. trinn","Alle"
+"NLA 254717 Interkulturell forståelse vekt på Norge","Alle"
+"NLA 254791 Interkulturell forståelse vekt på Øst-Asia","Alle"
+"NLA 254852 Pedagogikk",43.3
+"NLA 254902 Interkulturell forståelse vekt på Øst-Afrika","Alle"
+"NLA 254929 Religion og kultur","Alle"
+"SA/SH 231064 Samisk språk og litteratur","Alle"
+"SA/SH 231065 Duodji (samisk håndverk)","Alle"
+"SA/SH 231066 Reindriftsstudier","Alle"
+"SA/SH 231135 Samisk førskolelærerutdanning","Alle"
+"SA/SH 231557 Samisk grunnskolelærer 1-7","Alle"
+"SA/SH 231651 Samisk grunnskolelærerutdanning 5.-10. trinn","Alle"
+"UIA 201003 Ingeniør byggdesign Grimstad","Alle"
+"UIA 201004 Ingeniør data Grimstad","Alle"
+"UIA 201006 Ingeniør fornybar energi Grimstad","Alle"
+"UIA 201007 Ingeniør flyteknikk Grimstad","Alle"
+"UIA 201012 Ingeniør maskin Grimstad","Alle"
+"UIA 201050 Sykepleierutdanning Kr.sand",40.1
+"UIA 201052 Sykepleierutdanning Grimstad",37.5
+"UIA 201060 Vernepleierutdanning Grimstad",37.1
+"UIA 201080 Sosionomutdanning",41.8
+"UIA 201083 Grunnskolelærerutdanning 5.-10. trinn master","Alle"
+"UIA 201084 Grunnskolelærerutdanning 1.-7. trinn master","Alle"
+"UIA 201130 Førskolelærerutd. Kr.sand.","Alle"
+"UIA 201132 Førskolelærerutd. Grimstad","Alle"
+"UIA 201149 Multimedieteknologi og -design Grimstad","Alle"
+"UIA 201157 Faglærerutdanning i drama","Alle"
+"UIA 201170 Engelsk årsstudium","Alle"
+"UIA 201172 Friluftsliv og naturguiding årsstudium","Alle"
+"UIA 201174 Fransk årsstudium","Alle"
+"UIA 201179 Historie årsstudium","Alle"
+"UIA 201184 Biologi årsstudium","Alle"
+"UIA 201189 IT og informasjonssystemer årsstudium","Alle"
+"UIA 201200 Kunstfag med fordypning i kunst og håndverk","Alle"
+"UIA 201203 Folkehelsearbeid",40.5
+"UIA 201205 Matematikk årsstudium","Alle"
+"UIA 201210 Nordisk språk og litteratur årsstudium","Alle"
+"UIA 201238 Statsvitenskap årsstudium",36.9
+"UIA 201242 Samfunnsfag årsstudium",35
+"UIA 201247 Utviklingsstudiet årsstudium",41.8
+"UIA 201260 IT og informasjonssystemer",33
+"UIA 201301 Matematisk finans","Alle"
+"UIA 201303 Oversetting og interkulturell kom. engelsk","Alle"
+"UIA 201317 Opplevelsesbasert reiseliv",36.6
+"UIA 201318 Revisjon",39.7
+"UIA 201327 Biologi","Alle"
+"UIA 201336 Skolebibliotekkunnskap deltid","Alle"
+"UIA 201345 Økonomi og administrasjon - siviløkonom",45.8
+"UIA 201366 Filosofi årsstudium","Alle"
+"UIA 201369 Økonomi og administrasjon Kr.sand",42.7
+"UIA 201404 Økonomi og administrasjon Grimstad",40.1
+"UIA 201437 Kunstfag med fordypning i musikk","Alle"
+"UIA 201440 Idrett",42.9
+"UIA 201456 Litteratur film og teater","Alle"
+"UIA 201474 Samfunnsendring og kommunikasjon","Alle"
+"UIA 201481 Historie","Alle"
+"UIA 201482 Religion etikk og kultur","Alle"
+"UIA 201484 Utviklingsstudier",39.3
+"UIA 201547 Grunnskolelærerutdanning 1.-7. trinn Kristiansand","Alle"
+"UIA 201548 Grunnskolelærerutdanning 1.-7. trinn Grimstad","Alle"
+"UIA 201618 Drama årsstudium","Alle"
+"UIA 201642 Kunst og håndverk årsstudium","Alle"
+"UIA 201646 Ernæring mat og kultur årsstudium",40.5
+"UIA 201649 Idrett årsstudium",43.5
+"UIA 201651 Grunnskolelærerutdanning 5.-10. trinn Kr. sand",38.7
+"UIA 201652 Religion og etikk årsstudium","Alle"
+"UIA 201661 Fysikk årsstudium","Alle"
+"UIA 201663 Mediefag årsstudium",36.9
+"UIA 201667 Musikk årsstudium",42.9
+"UIA 201676 Pedagogikk årsstudium",37.3
+"UIA 201690 Tysk årsstudium","Alle"
+"UIA 201702 Bioingeniør",41.5
+"UIA 201767 Industriell økonomi og tekn.ledelse Grimstad",48.1
+"UIA 201794 Kommunikasjon årsstudium","Alle"
+"UIA 201803 Ingeniør elektronikk Grimstad","Alle"
+"UIA 201807 Informasjons- og kom.teknologi Grimstad","Alle"
+"UIA 201828 Lektorutdanning i realfag","Alle"
+"UIA 201850 Kommunikasjon",40
+"UIA 201852 Pedagogikk",31.3
+"UIA 201862 Matematikk og fysikk","Alle"
+"UIA 201864 Ernæring mat og kultur",46.8
+"UIA 201881 Statsvitenskap",40
+"UIA 201887 Engelsk","Alle"
+"UIA 201889 Nordisk språk og litteratur","Alle"
+"UIA 201900 Arbeids- og velferdssosiologi","Alle"
+"UIA 201912 Spansk årsstudium","Alle"
+"UIA 201922 Litteratur film og teater årsstudium","Alle"
+"UMB 192199 Grunnstudium",53.3
+"UMB 192230 Eiendomsfag",44.8
+"UMB 192233 Frie realfag","Alle"
+"UMB 192299 Bioteknologi",47.7
+"UMB 192310 Landskapsingeniør",48
+"UMB 192321 Husdyrvitenskap","Alle"
+"UMB 192322 Skogfag","Alle"
+"UMB 192327 Biologi",44.1
+"UMB 192332 Kjemi","Alle"
+"UMB 192369 Økonomi og administrasjon",47.2
+"UMB 192377 Miljø og naturressurser","Alle"
+"UMB 192388 Økologi og naturforvaltning","Alle"
+"UMB 192406 Geomatikk: kart satellitter og 3D-modellering","Alle"
+"UMB 192468 Samfunnsøkonomi",46.2
+"UMB 192484 Internasjonale miljø- og utviklingsstudier",48.4
+"UMB 192544 Hestefag","Alle"
+"UMB 192732 Landskapsarkitektur",54.7
+"UMB 192759 Byggeteknikk og arkitektur",49.8
+"UMB 192766 Maskin- prosess- og produktutvikling",43.2
+"UMB 192767 Industriell økonomi",52.3
+"UMB 192783 Kjemi og bioteknologi","Alle"
+"UMB 192784 Miljøfysikk og fornybar energi",49.2
+"UMB 192809 Vann- og miljøteknikk","Alle"
+"UMB 192813 Geomatikk: kart satellitter og 3D-mod. master","Alle"
+"UMB 192835 Fornybar energi",51.5
+"UMB 192842 Plantevitenskap","Alle"
+"UMB 192843 Lektorutdanning i realfag","Alle"
+"UMB 192857 Energi- og miljøfysikk",42.9
+"UMB 192864 Matvitenskap","Alle"
+"UMB 192949 By- og regionplanlegging",47.7
+"UIO 185170 Engelsk årsstudium",58.7
+"UIO 185174 Fransk årsstudium",55.9
+"UIO 185179 Historie årsstudium",57.1
+"UIO 185211 Nordisk særlig norsk språk og litteratur års",57.8
+"UIO 185212 Norsk som andrespråk årsstudium",51.2
+"UIO 185221 Tegnspråk årsstudium","Alle"
+"UIO 185222 Tverrfaglige kjønnsstudier årsstudium",53.8
+"UIO 185233 Realfag årsstudium","Alle"
+"UIO 185272 Kunsthistorie årsstudium",56.7
+"UIO 185306 Matematikk informatikk og teknologi","Alle"
+"UIO 185308 Kultur og kommunikasjon",53
+"UIO 185327 Biologi",44.4
+"UIO 185437 Musikkvitenskap","Alle"
+"UIO 185438 Samfunnsgeografi",52.5
+"UIO 185439 Estetiske studier",50.6
+"UIO 185452 Offentlig administrasjon og ledelse",54.2
+"UIO 185455 Portugisisk",42.4
+"UIO 185459 Antikk kultur og klassiske språk",46.8
+"UIO 185461 Midtøstenstudier med tyrkisk","Alle"
+"UIO 185462 Kunsthistorie",49
+"UIO 185464 Informatikk: tekniske og naturvitenskaplige anv.","Alle"
+"UIO 185465 Helseledelse og helseøkonomi",53.5
+"UIO 185466 Tegnspråk og tolking","Alle"
+"UIO 185478 Arkeologi",48.5
+"UIO 185479 Filosofi og idéhistorie",48.4
+"UIO 185480 Teologi og kristendom","Alle"
+"UIO 185481 Historie",48.3
+"UIO 185482 Religion og samfunn",45
+"UIO 185483 Russisk",38
+"UIO 185565 Italiensk",41.3
+"UIO 185582 Japansk med Japan-studier",49.7
+"UIO 185592 Kinesisk med Kina-studier",52.4
+"UIO 185601 Arkivkunnskap årsstudium",53.9
+"UIO 185604 Medievitenskap årsstudium",56.3
+"UIO 185615 Allmenn litteraturvitenskap årsstudium",56.7
+"UIO 185626 Kristendom årsstudium",47.8
+"UIO 185690 Tysk årsstudium",51.8
+"UIO 185698 Samfunnsøkonomisk analyse 5-årig",55
+"UIO 185707 Farmasi",50.4
+"UIO 185708 Master i klinisk ernæring start høst","Alle"
+"UIO 185713 Master i klinisk ernæring start vår",63
+"UIO 185724 Rettsvitenskap (jus) start høst",58.1
+"UIO 185725 Rettsvitenskap (jus) start vår",55.7
+"UIO 185740 Medisin start høst",68
+"UIO 185742 Odontologi start høst",63.9
+"UIO 185745 Medisin start vår",66.1
+"UIO 185748 Odontologi start vår","Alle"
+"UIO 185752 Psykologi årsstudium",57
+"UIO 185771 Teologi profesjonsstudium","Alle"
+"UIO 185786 Nederlandsk","Alle"
+"UIO 185793 Fransk",40.4
+"UIO 185795 Tysk","Alle"
+"UIO 185817 Lektorprogrammet nordisk","Alle"
+"UIO 185829 Informatikk: programmering og nettverk","Alle"
+"UIO 185830 Informatikk: design bruk og interaksjon",46
+"UIO 185832 Informatikk: nanoelektronikk og robotikk",38.8
+"UIO 185837 Informatikk: språk og kommunikasjon",45.5
+"UIO 185841 Demokrati og rettigheter i informasjonssamfunnet",50
+"UIO 185843 Lektorprogrammet realfag","Alle"
+"UIO 185844 Lektorprogrammet kultur og samfunnsfag",49.3
+"UIO 185851 Medievitenskap",50.2
+"UIO 185852 Pedagogikk",46.5
+"UIO 185853 Spesialpedagogikk",46.4
+"UIO 185856 Elektronikk og datateknologi","Alle"
+"UIO 185857 Fysikk astronomi og meteorologi",40.9
+"UIO 185858 Geofag: geologi geofysikk og geografi",43.8
+"UIO 185860 Kjemi","Alle"
+"UIO 185862 Matematikk og økonomi",51.8
+"UIO 185863 Materialer energi og nanoteknologi","Alle"
+"UIO 185865 Molekylærbiologi og biologisk kjemi",41.7
+"UIO 185868 India områdestudier",48
+"UIO 185870 Europastudier (EU)",51.8
+"UIO 185872 Internasjonale studier",58.1
+"UIO 185873 Tverrfaglige kjønnsstudier",47.6
+"UIO 185874 Kriminologi",53.3
+"UIO 185876 Psykologi",55.9
+"UIO 185879 Sosialantropologi",50.2
+"UIO 185880 Sosiologi",50.4
+"UIO 185881 Statsvitenskap",54.2
+"UIO 185883 Utviklingsstudier",51.7
+"UIO 185889 Nordiske studier",46.9
+"UIO 185893 Lingvistikk",55.7
+"UIO 185898 Samfunnsøkonomi",55.5
+"UIO 185899 Tannpleie",54.2
+"UIO 185904 Kulturarv og bevaringskunnskap",49.8
+"UIO 185912 Spansk årsstudium",60.2
+"UIO 185918 Latin-Amerika-studier",45.5
+"UIO 185919 Nord-Amerika-studier",44.8
+"UIO 185920 Engelsk",51.6
+"UIO 185922 Allmenn litteraturvitenskap",50.9
+"UIO 185923 Midtøsten-studier med arabisk",52
+"UIO 185924 Spansk",52.8
+"UIO 185929 Religionshistorie og kulturhistorie",42
+"UIO 185935 Lektorprogrammet fremmedspråk","Alle"
+"UIO 185941 Psykologi profesjon start høst",64.9
+"UIO 185942 Psykologi profesjon start vår",63
+"UIS 217003 Bygg",40.7
+"UIS 217004 Data","Alle"
+"UIS 217005 Elektro","Alle"
+"UIS 217009 Kjemi og miljø","Alle"
+"UIS 217012 Maskin","Alle"
+"UIS 217015 Petroleumsteknologi",44
+"UIS 217046 Fjernsyns- og multimedieproduksjon",45.8
+"UIS 217050 Sykepleierutdanning",36.3
+"UIS 217070 Barnevern",37.1
+"UIS 217080 Sosialt arbeid",39.8
+"UIS 217130 Førskolelærerutdanning","Alle"
+"UIS 217170 Engelsk årsstudium",32.3
+"UIS 217179 Historie årsstudium","Alle"
+"UIS 217196 Religionsstudier","Alle"
+"UIS 217200 Kunst- og kulturstudier","Alle"
+"UIS 217205 Matematikk årsstudium","Alle"
+"UIS 217211 Nordisk årsstudium","Alle"
+"UIS 217240 Sosiologi årsstudium",35.9
+"UIS 217255 Hotelledelse","Alle"
+"UIS 217317 Reiselivsledelse","Alle"
+"UIS 217318 Regnskap og revisjon",39.2
+"UIS 217345 Økonomi og administrasjon - siviløkonom master",46.7
+"UIS 217369 Økonomi og administrasjon",43.9
+"UIS 217440 Kroppsøving/idrett",38.9
+"UIS 217454 Journalistikk",48.4
+"UIS 217481 Historie","Alle"
+"UIS 217505 Kunst og håndtverk",43
+"UIS 217547 Grunnskolelærerutdanning 1.-7. trinn","Alle"
+"UIS 217618 Drama","Alle"
+"UIS 217649 Kroppsøving/idrett årsstudium",42.2
+"UIS 217651 Grunnskolelærerutdanning 5.-10. trinn","Alle"
+"UIS 217755 Konstruksjoner og materialer",38.7
+"UIS 217800 Industriell økonomi",49.9
+"UIS 217801 Petroleumsteknologi master",46.8
+"UIS 217802 Offshoreteknologi",45.7
+"UIS 217803 Informasjonsteknologi",41.5
+"UIS 217844 Adjunkt- og lektorprogram i humanistiske fag","Alle"
+"UIS 217857 Matematikk og fysikk","Alle"
+"UIS 217860 Biologisk kjemi","Alle"
+"UIS 217880 Sosiologi",32.9
+"UIS 217881 Statsvitenskap",41.7
+"UIS 217887 Engelsk språk og litteratur","Alle"
+"UIS 217889 Nordisk språk og litteratur","Alle"
+"UIS 217938 Byutvikling og urban design","Alle"
+"UIS 217947 Petroleumsgeologi",41.4
+"UIT 186002 Ingeniør Sikkerhet og miljø","Alle"
+"UIT 186017 Ingeniør Automatiseringsteknikk","Alle"
+"UIT 186018 Ingeniør Prosess/gassteknologi","Alle"
+"UIT 186049 Ingeniør Nautikk","Alle"
+"UIT 186050 Sykepleierutdanning",43.8
+"UIT 186083 Lærerutdanning 5.-10. trinn integrert master","Alle"
+"UIT 186084 Lærerutdanning 1.-7. trinn integrert master","Alle"
+"UIT 186130 Førskolelærerutdanning","Alle"
+"UIT 186132 Førskolelærerutdanning samlingsbasert","Alle"
+"UIT 186137 Allmenn litteraturvitenskap oppstart vår","Alle"
+"UIT 186164 Bedriftsøkonomi",38.6
+"UIT 186170 Engelsk oppstart høst","Alle"
+"UIT 186174 Fransk oppstart vår","Alle"
+"UIT 186179 Historie oppstart høst","Alle"
+"UIT 186205 Matematikk","Alle"
+"UIT 186211 Nordisk oppstart høst","Alle"
+"UIT 186222 Kjønnsstudier","Alle"
+"UIT 186235 Nordsamisk som morsmål oppstart vår","Alle"
+"UIT 186299 Bioteknologi","Alle"
+"UIT 186306 Datasikkerhet","Alle"
+"UIT 186327 Biologi klima og miljø","Alle"
+"UIT 186331 Fiskeri- og havbruksvitenskap","Alle"
+"UIT 186369 Økonomi og administrasjon",38.6
+"UIT 186395 Informatikk","Alle"
+"UIT 186427 Biomedisin","Alle"
+"UIT 186474 Samfunnsplanlegging og kulturforståelse","Alle"
+"UIT 186475 Kunstvitenskap","Alle"
+"UIT 186478 Arkeologi","Alle"
+"UIT 186479 Filosofi","Alle"
+"UIT 186481 Historie","Alle"
+"UIT 186482 Religionsvitenskap","Alle"
+"UIT 186483 Russlandsstudier","Alle"
+"UIT 186609 Antikkens kultur oppstart høst","Alle"
+"UIT 186613 Historie oppstart vår","Alle"
+"UIT 186615 Allmenn litteraturvitenskap oppstart høst","Alle"
+"UIT 186616 Allmenn språkvitenskap oppstart høst","Alle"
+"UIT 186623 Engelsk oppstart vår","Alle"
+"UIT 186626 Religionsvitenskap oppstart vår","Alle"
+"UIT 186644 Luftfartsfag","Alle"
+"UIT 186677 Allmenn språkvitenskap oppstart vår","Alle"
+"UIT 186692 Drama og teater","Alle"
+"UIT 186700 Ergoterapeututdanning",41.4
+"UIT 186701 Radiografutdanning",40
+"UIT 186702 Bioingeniørutdanning","Alle"
+"UIT 186703 Fysioterapeututdanning",53.6
+"UIT 186707 Farmasi","Alle"
+"UIT 186709 Fiskehelse","Alle"
+"UIT 186712 Russisk oppstart vår","Alle"
+"UIT 186724 Rettsvitenskap",47.3
+"UIT 186739 Medisinske fag","Alle"
+"UIT 186740 Medisin",61.2
+"UIT 186742 Odontologi",58.8
+"UIT 186743 Tannpleierutdanning",49.9
+"UIT 186752 Psykologi årsstudium",42.6
+"UIT 186769 Energi og miljø i nord","Alle"
+"UIT 186770 Dataanalyse og sensorteknologi","Alle"
+"UIT 186785 Informatikk master","Alle"
+"UIT 186789 Antikkens kultur oppstart vår","Alle"
+"UIT 186813 Industriell matematikk","Alle"
+"UIT 186814 Romfysikk","Alle"
+"UIT 186843 Lektorutdanning i realfag","Alle"
+"UIT 186844 Lektorutdanning i språk og samfunnsfag","Alle"
+"UIT 186846 Dokumentasjonsvitenskap","Alle"
+"UIT 186852 Pedagogikk","Alle"
+"UIT 186857 Fysikk","Alle"
+"UIT 186859 Geologi","Alle"
+"UIT 186860 Kjemi","Alle"
+"UIT 186862 Matematikk og statistikk","Alle"
+"UIT 186867 Ledelse innovasjon og marked",38.7
+"UIT 186876 Psykologi",41.6
+"UIT 186877 Samfunnssikkerhet og miljø","Alle"
+"UIT 186878 Politikk økonomi og filosofi","Alle"
+"UIT 186879 Sosialantropologi","Alle"
+"UIT 186880 Sosiologi","Alle"
+"UIT 186881 Statsvitenskap","Alle"
+"UIT 186891 Språk og litteratur","Alle"
+"UIT 186892 Språk og økonomi","Alle"
+"UIT 186898 Samfunnsøkonomi","Alle"
+"UIT 186910 Religionsvitenskap oppstart høst","Alle"
+"UIT 186912 Spansk oppstart vår","Alle"
+"UIT 186950 Nordisk oppstart vår","Alle"