ML_course/assignment 1/iml_assignment1_solved.ipynb
2023-04-27 15:24:21 +02:00

599 lines
23 KiB
Plaintext

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.3"
},
"colab": {
"provenance": []
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "whjkuflGLNWu"
},
"source": [
"# Fibonacci Solver\n",
"\n",
"The Fibonacci Sequence is the series of numbers:\n",
"\n",
"` 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... `\n",
"\n",
"The next number is found by adding up the two numbers before it:\n",
"\n",
"the `2` is found by adding the two numbers before it `(1+1)`,\n",
"the `3` is found by adding the two numbers before it `(1+2)`,\n",
"the `5` is `(2+3)`,\n",
"and so on!\n",
"\n",
"## Coding it up in Python\n",
"Just initialize to variables with the first two numbers of the Fibonacci sequence. Then add them up and print the result.\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "p58ac2HULNWv"
},
"source": [
"# Starting Point\n",
"first_number = 0\n",
"second_number = 1\n",
"result = first_number + second_number\n",
"\n",
"print(result)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "xSyPoS1bLNWy"
},
"source": [
"You now need to do this multiple times, so you need a ***loop***\n",
"To use a loop you need to know how many times you want to loop for. \n",
"For now, create a loop that prints **20** numbers (from 0 to 19). To do this in python you can create a ***for loop*** using the `range` function which will run the function for every number in the range.\n",
"(TIP: Python is a ***0 based*** language which means it starts counting from 0 not 1 as a human normally would.)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "tTsWxVxMLNWy"
},
"source": [
"for count in range(20):\n",
" print(count)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "INNU9p8zLNW0"
},
"source": [
"Now use the loop to compute the first 20 elements of the Fibonacci sequence."
]
},
{
"cell_type": "code",
"metadata": {
"id": "4Hf59jqgLNW1"
},
"source": [
"# Starting Point\n",
"first_number = 0\n",
"second_number = 1\n",
"\n",
"for count in range(20):\n",
" result = first_number + second_number\n",
" print(result)\n",
" first_number = second_number\n",
" second_number = result"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "bScJ-6tULNW3"
},
"source": [
"If you managed it till here great job!\n",
"Is seems to work great so far, but you need to store these numbers so you can reference them when needed."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1VhirrXpLNW3"
},
"source": [
"Create an empty ***array*** called `fibonacci` and then append the elements of the sequence to it."
]
},
{
"cell_type": "code",
"metadata": {
"id": "thTMoVY2LNW3"
},
"source": [
"# Starting Point\n",
"first_number = 0\n",
"second_number = 1\n",
"\n",
"fibonacci = []\n",
"\n",
"fibonacci.append(first_number)\n",
"fibonacci.append(second_number)\n",
"\n",
"for count in range(20):\n",
" result = first_number + second_number\n",
" # print(result)\n",
" fibonacci.append(result)\n",
" first_number = second_number\n",
" second_number = result\n",
" \n",
"print(fibonacci)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "6nlc_cC7LNW5"
},
"source": [
"If everything worked according to the plan, you should be able to access any of the first 20 elements of the Fibonacci sequence at will.\n",
"\n",
"eg `fibonacci[0]` would get us the first item in the array whilst `fibonacci[9]` would get us the tenth item (remember Python is 0 based so you always need to take 1 away from the number you need)"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yEKa7pAuLNW6"
},
"source": [
"fibonacci[0]"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1wbxOVnELNW7"
},
"source": [
"fibonacci[9]"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "50FpCM7CLNW9"
},
"source": [
"So now you know how to get at the index, you need to know which index values are asked for by the user.\n",
"Lets get some input from the user."
]
},
{
"cell_type": "code",
"metadata": {
"id": "YIJRBUXWLNW-",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 53
},
"outputId": "aaadcdb4-2317-4b63-c306-3256393a1875"
},
"source": [
"input()"
],
"execution_count": null,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'2'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"source": [
"Get the first index from the user"
],
"metadata": {
"id": "5Vp9iO2r2e2S"
}
},
{
"cell_type": "code",
"source": [
"first_index = input()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Zj6mnXCI2mNo",
"outputId": "8404c9dd-b5f0-42ec-97bd-d57abebafbed"
},
"execution_count": null,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Get the second index from the user"
],
"metadata": {
"id": "9LDXbzP02rFa"
}
},
{
"cell_type": "code",
"metadata": {
"id": "wqbTuR2TLNXA",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "66aecb44-52c6-44f3-95a7-140c1dce6fe1"
},
"source": [
"second_index = input()"
],
"execution_count": null,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Print the received inputs and their types"
],
"metadata": {
"id": "EK9FMjJV22x9"
}
},
{
"cell_type": "code",
"metadata": {
"id": "xfy81HrsLNXC",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "fd3d4b7d-88c7-4e1e-9486-3a0718dfa737"
},
"source": [
"print(first_index)\n",
"print(type(first_index))\n",
"print(second_index)\n",
"print(type(second_index))"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"2\n",
"<class 'str'>\n",
"2\n",
"<class 'str'>\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ttb_0MejLNXE"
},
"source": [
"The value received from input will be treated as a string type, you need to convert this to a number so python knows to treat it as one."
]
},
{
"cell_type": "code",
"source": [
"first_index = int(first_index)\n",
"second_index = int(second_index)"
],
"metadata": {
"id": "RwVoHTLn6QvB"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Print the type of the transformed variables."
],
"metadata": {
"id": "pxKx8gKy2-eh"
}
},
{
"cell_type": "code",
"source": [
"type(first_index)\n",
"type(second_index)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dN_EzHKr3GmO",
"outputId": "c45cdbad-5e51-457a-83d5-57e92e2b44c4"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"int"
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CRuAEA7KLNXE"
},
"source": [
"Now you have all the parts you need to make this work. \n",
"\n",
"* The user should be prompted \"How many results would you like?\"\n",
"* The program should read the users preference, e.g. 20, and then compute the list of elements up to this number.\n",
"* Then the program should ask the user for 2 indexes within the list of the calculated Fibonacci sequence\n",
"* Finally it should print the summation of their values.\n",
"\n",
"Time to put it together:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ukW0WUA7LNXE",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "f1d134d8-61f7-4f93-a54b-d63dffe08964"
},
"source": [
"# Starting Point\n",
"first_number = 0\n",
"second_number = 1\n",
"\n",
"fibonacci = []\n",
"\n",
"fibonacci.append(first_number)\n",
"fibonacci.append(second_number)\n",
"\n",
"print(\"##### GENERATING FIBONACCI LIST #####\")\n",
"fib_range = int(input(\"How many results would you like?\"))\n",
"for count in range(fib_range-2):\n",
" result = first_number + second_number\n",
" # print(result)\n",
" fibonacci.append(result)\n",
" first_number = second_number\n",
" second_number = result\n",
"\n",
"print(\"##### COMPLETED MAKING FIBONACCI LIST #####\")\n",
"\n",
"\n",
"first_index = int(input(\"Please enter the first number you require?\"))\n",
"second_index = int(input(\"Please enter the second number you require?\"))\n",
"\n",
"print(\"##### GETTING RESULT #####\")\n",
"final_answer = fibonacci[first_index-1] + fibonacci[second_index-1]\n",
"print(\"\\n\\nThe answer is:\\n\\n{}\".format(final_answer))"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"##### GENERATING FIBONACCI LIST #####\n",
"How many results would you like?10\n",
"##### COMPLETED MAKING FIBONACCI LIST #####\n",
"Please enter the first number you require?10\n",
"Please enter the second number you require?9\n",
"##### GETTING RESULT #####\n",
"\n",
"\n",
"The answer is:\n",
"\n",
"55\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Finally plot the first 30 elements of the Fibonacci sequence using matplotlib"
],
"metadata": {
"id": "qqMN0OEjEyPN"
}
},
{
"cell_type": "code",
"metadata": {
"id": "edzR_wahLNXG",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"outputId": "bb9ad5f3-811d-4687-adb0-432d3ed72ab9"
},
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot(fibonacci)"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f56d06a2a90>]"
]
},
"metadata": {},
"execution_count": 13
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"Compute the Fibonacci sequence recursively"
],
"metadata": {
"id": "AA67da2KzQnL"
}
},
{
"cell_type": "code",
"source": [
"def fibonacci_recursive(n):\n",
" if n < 2:\n",
" return n\n",
" return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)"
],
"metadata": {
"id": "jJppjtZAzT80"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"print(\"##### GENERATING FIBONACCI LIST #####\")\n",
"fib_range = int(input(\"How many results would you like?\"))\n",
"for i in range(fib_range):\n",
" print(fibonacci_recursive(i))"
],
"metadata": {
"id": "1GDrTgOhz7TM",
"outputId": "c1007637-9156-417d-f973-77a3577857a2",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"##### GENERATING FIBONACCI LIST #####\n",
"How many results would you like?20\n",
"0\n",
"1\n",
"1\n",
"2\n",
"3\n",
"5\n",
"8\n",
"13\n",
"21\n",
"34\n",
"55\n",
"89\n",
"144\n",
"233\n",
"377\n",
"610\n",
"987\n",
"1597\n",
"2584\n",
"4181\n"
]
}
]
}
]
}