diff --git a/Untitled.ipynb b/Untitled.ipynb
new file mode 100644
index 0000000..a291be0
--- /dev/null
+++ b/Untitled.ipynb
@@ -0,0 +1,995 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "fa239e28",
+ "metadata": {},
+ "source": [
+ "# reto data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "29ead73f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import plotly as plt\n",
+ "import seaborn as sns\n",
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "303a79ed",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " consume_id | \n",
+ " distance | \n",
+ " consume | \n",
+ " speed | \n",
+ " temp_inside | \n",
+ " temp_outside | \n",
+ " gas_type | \n",
+ " AC | \n",
+ " rain | \n",
+ " sun | \n",
+ " snow | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0 | \n",
+ " 28.0 | \n",
+ " 5.0 | \n",
+ " 26 | \n",
+ " 21.5 | \n",
+ " 12 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 12.0 | \n",
+ " 4.2 | \n",
+ " 30 | \n",
+ " 21.5 | \n",
+ " 13 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 2 | \n",
+ " 11.2 | \n",
+ " 5.5 | \n",
+ " 38 | \n",
+ " 21.5 | \n",
+ " 15 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 3 | \n",
+ " 12.9 | \n",
+ " 3.9 | \n",
+ " 36 | \n",
+ " 21.5 | \n",
+ " 14 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 4 | \n",
+ " 18.5 | \n",
+ " 4.5 | \n",
+ " 46 | \n",
+ " 21.5 | \n",
+ " 15 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 371 | \n",
+ " 383 | \n",
+ " 16.0 | \n",
+ " 3.7 | \n",
+ " 39 | \n",
+ " 24.5 | \n",
+ " 18 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 372 | \n",
+ " 384 | \n",
+ " 16.1 | \n",
+ " 4.3 | \n",
+ " 38 | \n",
+ " 25.0 | \n",
+ " 31 | \n",
+ " SP98 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 373 | \n",
+ " 385 | \n",
+ " 16.0 | \n",
+ " 3.8 | \n",
+ " 45 | \n",
+ " 25.0 | \n",
+ " 19 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 374 | \n",
+ " 386 | \n",
+ " 15.4 | \n",
+ " 4.6 | \n",
+ " 42 | \n",
+ " 25.0 | \n",
+ " 31 | \n",
+ " SP98 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 375 | \n",
+ " 387 | \n",
+ " 14.7 | \n",
+ " 5.0 | \n",
+ " 25 | \n",
+ " 25.0 | \n",
+ " 30 | \n",
+ " SP98 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
376 rows × 11 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " consume_id distance consume speed temp_inside temp_outside gas_type \\\n",
+ "0 0 28.0 5.0 26 21.5 12 E10 \n",
+ "1 1 12.0 4.2 30 21.5 13 E10 \n",
+ "2 2 11.2 5.5 38 21.5 15 E10 \n",
+ "3 3 12.9 3.9 36 21.5 14 E10 \n",
+ "4 4 18.5 4.5 46 21.5 15 E10 \n",
+ ".. ... ... ... ... ... ... ... \n",
+ "371 383 16.0 3.7 39 24.5 18 SP98 \n",
+ "372 384 16.1 4.3 38 25.0 31 SP98 \n",
+ "373 385 16.0 3.8 45 25.0 19 SP98 \n",
+ "374 386 15.4 4.6 42 25.0 31 SP98 \n",
+ "375 387 14.7 5.0 25 25.0 30 SP98 \n",
+ "\n",
+ " AC rain sun snow \n",
+ "0 0 0 0 0 \n",
+ "1 0 0 0 0 \n",
+ "2 0 0 0 0 \n",
+ "3 0 0 0 0 \n",
+ "4 0 0 0 0 \n",
+ ".. .. ... ... ... \n",
+ "371 0 0 0 0 \n",
+ "372 1 0 0 0 \n",
+ "373 0 0 0 0 \n",
+ "374 1 0 0 0 \n",
+ "375 1 0 0 0 \n",
+ "\n",
+ "[376 rows x 11 columns]"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = pd.read_csv(\"./consume_data.csv\")\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "2f3dfbb6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "consume_id 0\n",
+ "distance 0\n",
+ "consume 0\n",
+ "speed 0\n",
+ "temp_inside 0\n",
+ "temp_outside 0\n",
+ "gas_type 0\n",
+ "AC 0\n",
+ "rain 0\n",
+ "sun 0\n",
+ "snow 0\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.isna().sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "1eca4844",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array(['E10', 'SP98'], dtype=object)"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.gas_type.unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "9191bb17",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(376, 11)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "e67f2c79",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " distance | \n",
+ " consume | \n",
+ " speed | \n",
+ " temp_inside | \n",
+ " temp_outside | \n",
+ " gas_type | \n",
+ " AC | \n",
+ " rain | \n",
+ " sun | \n",
+ " snow | \n",
+ "
\n",
+ " \n",
+ " | consume_id | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 28.0 | \n",
+ " 5.0 | \n",
+ " 26 | \n",
+ " 21.5 | \n",
+ " 12 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 12.0 | \n",
+ " 4.2 | \n",
+ " 30 | \n",
+ " 21.5 | \n",
+ " 13 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " distance consume speed temp_inside temp_outside gas_type AC \\\n",
+ "consume_id \n",
+ "0 28.0 5.0 26 21.5 12 E10 0 \n",
+ "1 12.0 4.2 30 21.5 13 E10 0 \n",
+ "\n",
+ " rain sun snow \n",
+ "consume_id \n",
+ "0 0 0 0 \n",
+ "1 0 0 0 "
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.set_index(\"consume_id\", drop=True, inplace=True)\n",
+ "df.head(2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "28e82af7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "temp_outside -0.318758\n",
+ "speed -0.234537\n",
+ "sun -0.169173\n",
+ "temp_inside -0.161991\n",
+ "distance -0.131379\n",
+ "snow 0.072308\n",
+ "AC 0.089472\n",
+ "rain 0.251756\n",
+ "consume 1.000000\n",
+ "Name: consume, dtype: float64"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.corr()[\"consume\"].sort_values()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "380697b0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "mask = np.triu(np.ones_like(df.corr(), dtype=bool)) \n",
+ "color_map = sns.diverging_palette(0, 10, as_cmap=True) \n",
+ "\n",
+ "\n",
+ "sns.heatmap(df.corr(), \n",
+ " mask=mask,\n",
+ " cmap=\"viridis\",\n",
+ " vmax=1,\n",
+ " square=True, \n",
+ " linewidth=.5, \n",
+ " cbar_kws={\"shrink\": .5} \n",
+ "\n",
+ ");"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "edfdc0ff",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "SP98 219\n",
+ "E10 157\n",
+ "Name: gas_type, dtype: int64"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.gas_type.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "1c7b16cc",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " distance | \n",
+ " consume | \n",
+ " speed | \n",
+ " temp_inside | \n",
+ " temp_outside | \n",
+ " gas_type | \n",
+ " AC | \n",
+ " rain | \n",
+ " sun | \n",
+ " snow | \n",
+ " price | \n",
+ " cost | \n",
+ "
\n",
+ " \n",
+ " | consume_id | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 50 | \n",
+ " 11.8 | \n",
+ " 5.1 | \n",
+ " 29 | \n",
+ " 21.5 | \n",
+ " 5 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1.459 | \n",
+ " 7.4409 | \n",
+ "
\n",
+ " \n",
+ " | 319 | \n",
+ " 216.1 | \n",
+ " 5.3 | \n",
+ " 90 | \n",
+ " 22.0 | \n",
+ " 21 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1.459 | \n",
+ " 7.7327 | \n",
+ "
\n",
+ " \n",
+ " | 179 | \n",
+ " 16.2 | \n",
+ " 5.2 | \n",
+ " 29 | \n",
+ " 21.0 | \n",
+ " 0 | \n",
+ " E10 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1.379 | \n",
+ " 7.1708 | \n",
+ "
\n",
+ " \n",
+ " | 123 | \n",
+ " 14.2 | \n",
+ " 5.6 | \n",
+ " 24 | \n",
+ " 23.0 | \n",
+ " 8 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1.459 | \n",
+ " 8.1704 | \n",
+ "
\n",
+ " \n",
+ " | 57 | \n",
+ " 12.3 | \n",
+ " 6.2 | \n",
+ " 61 | \n",
+ " 21.5 | \n",
+ " 8 | \n",
+ " SP98 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1.459 | \n",
+ " 9.0458 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " distance consume speed temp_inside temp_outside gas_type AC \\\n",
+ "consume_id \n",
+ "50 11.8 5.1 29 21.5 5 SP98 0 \n",
+ "319 216.1 5.3 90 22.0 21 SP98 0 \n",
+ "179 16.2 5.2 29 21.0 0 E10 0 \n",
+ "123 14.2 5.6 24 23.0 8 SP98 0 \n",
+ "57 12.3 6.2 61 21.5 8 SP98 0 \n",
+ "\n",
+ " rain sun snow price cost \n",
+ "consume_id \n",
+ "50 1 0 0 1.459 7.4409 \n",
+ "319 0 1 0 1.459 7.7327 \n",
+ "179 0 0 0 1.379 7.1708 \n",
+ "123 0 0 0 1.459 8.1704 \n",
+ "57 0 0 0 1.459 9.0458 "
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[\"price\"] = df.gas_type.apply(lambda x: 1.379 if x ==\"E10\" else 1.459 )\n",
+ "df[\"cost\"] = df.price * df.consume\n",
+ "df.sample(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "8027df68",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " distance | \n",
+ " cost | \n",
+ "
\n",
+ " \n",
+ " | gas_type | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | E10 | \n",
+ " 21.095541 | \n",
+ " 6.827368 | \n",
+ "
\n",
+ " \n",
+ " | SP98 | \n",
+ " 18.866667 | \n",
+ " 7.159093 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " distance cost\n",
+ "gas_type \n",
+ "E10 21.095541 6.827368\n",
+ "SP98 18.866667 7.159093"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.groupby(\"gas_type\").agg({ \"distance\":\"mean\", \"cost\": \"mean\"})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "befc9c12",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "temp_outside -0.296167\n",
+ "speed -0.245135\n",
+ "sun -0.163373\n",
+ "temp_inside -0.161530\n",
+ "distance -0.135967\n",
+ "snow 0.074728\n",
+ "AC 0.102683\n",
+ "price 0.109082\n",
+ "rain 0.256929\n",
+ "consume 0.991202\n",
+ "cost 1.000000\n",
+ "Name: cost, dtype: float64"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.corr()[\"cost\"].sort_values()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "38dd9cf7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "AC rain snow sun\n",
+ "0 0 0 0 285\n",
+ " 1 26\n",
+ " 1 0 0 31\n",
+ " 1 0 3\n",
+ "1 0 0 0 14\n",
+ " 1 5\n",
+ " 1 0 0 11\n",
+ " 1 0 1\n",
+ "dtype: int64"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.groupby(['AC', 'rain', 'snow', 'sun']).size() #.unstack(fill_value=0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "eed7bd4d",
+ "metadata": {},
+ "source": [
+ "### imports statistics"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "b6f3a686",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn import metrics"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "a343061c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df2 = pd.get_dummies(df, columns=[\"gas_type\"], drop_first=True)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "80f09959",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X= df2.drop(\"consume\",axis=1)\n",
+ "y=df2[\"consume\"]\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=111)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "919800ce",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lr = LinearRegression()\n",
+ "lr.fit(X_train, y_train)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "2c237378",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([5.6, 4.3, 5.3, 4.8, 4.7, 5. , 5.8, 5.9, 5.2, 4.7])"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ " lr.predict(X_test).round(1)[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "1e45ae4a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([5.1, 4.8, 6.2, 5. , 4.9, 5. , 4.5, 5. , 4.5, 5.9])"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test.values[:10].round(3)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "e74d4dcf",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.92"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_squared_error(y_test, lr.predict(X_test).round(1)).round(3)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "3479ff86",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.846"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_squared_error(y_train, lr.predict(X_train)).round(3)\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.8.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..e69de29