{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Itertools" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from itertools import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "x = [1,2,3,4,5,6,7]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[1, 1, 0],\n", " [1, 2, -1],\n", " [1, 3, -2],\n", " [1, 4, -3],\n", " [1, 5, -4],\n", " [1, 6, -5],\n", " [1, 7, -6],\n", " [2, 2, 0],\n", " [2, 3, -1],\n", " [2, 4, -2],\n", " [2, 5, -3],\n", " [2, 6, -4],\n", " [2, 7, -5],\n", " [3, 3, 0],\n", " [3, 4, -1],\n", " [3, 5, -2],\n", " [3, 6, -3],\n", " [3, 7, -4],\n", " [4, 4, 0],\n", " [4, 5, -1],\n", " [4, 6, -2],\n", " [4, 7, -3],\n", " [5, 5, 0],\n", " [5, 6, -1],\n", " [5, 7, -2],\n", " [6, 6, 0],\n", " [6, 7, -1],\n", " [7, 7, 0]]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = []\n", "for iter in combinations_with_replacement(x,2):\n", " l.append([ iter[0], iter[1], iter[0]-iter[1] ]) \n", "l" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[1, 2, -1],\n", " [1, 3, -2],\n", " [1, 4, -3],\n", " [1, 5, -4],\n", " [1, 6, -5],\n", " [1, 7, -6],\n", " [2, 3, -1],\n", " [2, 4, -2],\n", " [2, 5, -3],\n", " [2, 6, -4],\n", " [2, 7, -5],\n", " [3, 4, -1],\n", " [3, 5, -2],\n", " [3, 6, -3],\n", " [3, 7, -4],\n", " [4, 5, -1],\n", " [4, 6, -2],\n", " [4, 7, -3],\n", " [5, 6, -1],\n", " [5, 7, -2],\n", " [6, 7, -1]]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = []\n", "for iter in combinations(x,2):\n", " l.append([ iter[0], iter[1], iter[0]-iter[1] ])\n", "l" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[1, 2, -1],\n", " [1, 3, -2],\n", " [1, 4, -3],\n", " [1, 5, -4],\n", " [1, 6, -5],\n", " [1, 7, -6],\n", " [2, 1, 1],\n", " [2, 3, -1],\n", " [2, 4, -2],\n", " [2, 5, -3],\n", " [2, 6, -4],\n", " [2, 7, -5],\n", " [3, 1, 2],\n", " [3, 2, 1],\n", " [3, 4, -1],\n", " [3, 5, -2],\n", " [3, 6, -3],\n", " [3, 7, -4],\n", " [4, 1, 3],\n", " [4, 2, 2],\n", " [4, 3, 1],\n", " [4, 5, -1],\n", " [4, 6, -2],\n", " [4, 7, -3],\n", " [5, 1, 4],\n", " [5, 2, 3],\n", " [5, 3, 2],\n", " [5, 4, 1],\n", " [5, 6, -1],\n", " [5, 7, -2],\n", " [6, 1, 5],\n", " [6, 2, 4],\n", " [6, 3, 3],\n", " [6, 4, 2],\n", " [6, 5, 1],\n", " [6, 7, -1],\n", " [7, 1, 6],\n", " [7, 2, 5],\n", " [7, 3, 4],\n", " [7, 4, 3],\n", " [7, 5, 2],\n", " [7, 6, 1]]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = []\n", "for iter in permutations(x,2):\n", " l.append([ iter[0], iter[1], iter[0]-iter[1] ])\n", "l" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2]\n", "[1, 2, 3]\n", "[1, 2, 3, 4]\n", "[1, 2, 3, 4, 5]\n", "[1, 2, 3, 4, 5, 6]\n", "[1, 2, 3, 4, 5, 6, 7]\n", "28\n" ] } ], "source": [ "l = [1,2,3,4,5,6,7]\n", "# l = [7,6,5,4,3,2,1]\n", "# l = [1,2,1,2,3,2,1]\n", "# l = [2,3,5,6,7,1,2,4,6,9,7,5]\n", "# l = [0,0,0,1,0,0,0,0,1,0]\n", "\n", "max = 0\n", "start_new = True\n", "temp_list = []\n", "for i in range(len(l)-1):\n", " if start_new:\n", " total_sum = sum(temp_list)\n", " if max < total_sum:\n", " max = total_sum\n", " temp_list = [l[i]]\n", " \n", " if l[i] < l[i+1]:\n", " temp_list.append(l[i+1])\n", " print(temp_list)\n", " total_sum = sum(temp_list)\n", " if max < total_sum:\n", " max = total_sum\n", " start_new = False\n", "\n", " else:\n", " start_new = True\n", "\n", "print(max)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "question 2 :\n", "\n", "You will be given a list of stock prices for a given day and your goal is to return the maximum profit that could have been made by buying a stock at the given price and then selling the stock later on. For example if the input is: \n", " `[45, 24, 35, 31, 40, 38, 11]` \n", "then your program should return 16 because if you bought the stock at `$24` and sold it at `$40`, a profit of $16 was made and this is the largest profit that could be made. If no profit could have been made, return -1." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Max profit value of the week : [16]\n" ] } ], "source": [ "# l = [1,2,3,4,5,6,7]\n", "l = [45, 24, 35, 31, 40, 38, 11] \n", "# l = [100, 180, 260, 310, 40, 535, 695]\n", "# l = [7,6,5,4,3,2,1]\n", "selling_combs = [] \n", "for iter in combinations(l,2):\n", " selling_combs.append([iter[1]-iter[0]])\n", "\n", "selling_combs.sort(reverse=True)\n", "print(\"Max profit value of the week :\",selling_combs[0])\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 2)\n", "(1, 3)\n", "(1, 4)\n", "(2, 1)\n", "(2, 3)\n", "(2, 4)\n", "(3, 1)\n", "(3, 2)\n", "(3, 4)\n", "(4, 1)\n", "(4, 2)\n", "(4, 3)\n" ] } ], "source": [ "for i in permutations(range(1,5),2):\n", " print(i)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8.3 64-bit ('anaconda3': conda)", "language": "python", "name": "python38364bitanaconda3conda5a21e7c9305747559a413d7622491a2e" }, "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" } }, "nbformat": 4, "nbformat_minor": 4 }