|
5 | 5 | "colab": {
|
6 | 6 | "name": "DSA_Competetive Programing.ipynb",
|
7 | 7 | "provenance": [],
|
8 |
| - "collapsed_sections": [], |
9 | 8 | "toc_visible": true,
|
10 |
| - "authorship_tag": "ABX9TyMbg9cNSjm5i/ecQ3Mr4TyT", |
11 | 9 | "include_colab_link": true
|
12 | 10 | },
|
13 | 11 | "kernelspec": {
|
|
96 | 94 | "# A biased function that returns TAILS with 80% probability and HEADS with 20% probability\n",
|
97 | 95 | "def biased():\n",
|
98 | 96 | " # generate a random number between 0–99, both inclusive\n",
|
99 |
| - " r = randint(0, 99) \n", |
| 97 | + " r = randint(0, 99)\n", |
100 | 98 | " # return TAILS if we got a number between [0–79]; otherwise, return HEADS\n",
|
101 | 99 | " # random.random()\n",
|
102 | 100 | " # A = [0]*8 + [1]*2 #return random.choice(A)\n",
|
103 | 101 | " return TAILS if (r <= 79) else HEADS\n",
|
104 |
| - " \n", |
| 102 | + "\n", |
105 | 103 | "# Return HEADS and TAILS with equal probability using the specified function\n",
|
106 | 104 | "def generate():\n",
|
107 | 105 | " while True:\n",
|
108 | 106 | " first = biased()\n",
|
109 | 107 | " second = biased()\n",
|
110 | 108 | " if first is not second:\n",
|
111 | 109 | " return first # or return second\n",
|
112 |
| - " \n", |
| 110 | + "\n", |
113 | 111 | "if __name__ == '__main__':\n",
|
114 | 112 | " x = y = 0\n",
|
115 | 113 | " for i in range(10000):\n",
|
|
180 | 178 | " x6 += 1\n",
|
181 | 179 | " else:\n",
|
182 | 180 | " x7 += 1\n",
|
183 |
| - " print('X1 ~', x1 / 10000, '%') \n", |
184 |
| - " print('X2 ~', x2 / 10000, '%') \n", |
185 |
| - " print('X3 ~', x3 / 10000, '%') \n", |
186 |
| - " print('X4 ~', x4 / 10000, '%') \n", |
187 |
| - " print('X5 ~', x5 / 10000, '%') \n", |
188 |
| - " print('X6 ~', x6 / 10000, '%') \n", |
189 |
| - " print('X7 ~', x7 / 10000, '%') " |
| 181 | + " print('X1 ~', x1 / 10000, '%')\n", |
| 182 | + " print('X2 ~', x2 / 10000, '%')\n", |
| 183 | + " print('X3 ~', x3 / 10000, '%')\n", |
| 184 | + " print('X4 ~', x4 / 10000, '%')\n", |
| 185 | + " print('X5 ~', x5 / 10000, '%')\n", |
| 186 | + " print('X6 ~', x6 / 10000, '%')\n", |
| 187 | + " print('X7 ~', x7 / 10000, '%')" |
190 | 188 | ],
|
191 | 189 | "metadata": {
|
192 | 190 | "colab": {
|
|
245 | 243 | "# x4 += 1\n",
|
246 | 244 | "# else:\n",
|
247 | 245 | "# x5 += 1\n",
|
248 |
| - "# print('X1 ~', x1 / 10000, '%') \n", |
249 |
| - "# print('X2 ~', x2 / 10000, '%') \n", |
250 |
| - "# print('X3 ~', x3 / 10000, '%') \n", |
251 |
| - "# print('X4 ~', x4 / 10000, '%') \n", |
252 |
| - "# print('X5 ~', x5 / 10000, '%') " |
| 246 | + "# print('X1 ~', x1 / 10000, '%')\n", |
| 247 | + "# print('X2 ~', x2 / 10000, '%')\n", |
| 248 | + "# print('X3 ~', x3 / 10000, '%')\n", |
| 249 | + "# print('X4 ~', x4 / 10000, '%')\n", |
| 250 | + "# print('X5 ~', x5 / 10000, '%')" |
253 | 251 | ],
|
254 | 252 | "metadata": {
|
255 | 253 | "colab": {
|
|
283 | 281 | {
|
284 | 282 | "cell_type": "code",
|
285 | 283 | "source": [
|
286 |
| - "arr = [5, 2, 8, 7, 1]; \n", |
287 |
| - "temp = 0; \n", |
288 |
| - "#Sort the array in ascending order \n", |
289 |
| - "for i in range(0, len(arr)): \n", |
290 |
| - " for j in range(i+1, len(arr)): \n", |
291 |
| - " if(arr[i] > arr[j]): \n", |
292 |
| - " temp = arr[i]; \n", |
293 |
| - " arr[i] = arr[j]; \n", |
294 |
| - " arr[j] = temp; \n", |
295 |
| - "arr " |
| 284 | + "arr = [5, 2, 8, 7, 1];\n", |
| 285 | + "temp = 0;\n", |
| 286 | + "#Sort the array in ascending order\n", |
| 287 | + "for i in range(0, len(arr)):\n", |
| 288 | + " for j in range(i+1, len(arr)):\n", |
| 289 | + " if(arr[i] > arr[j]):\n", |
| 290 | + " temp = arr[i];\n", |
| 291 | + " arr[i] = arr[j];\n", |
| 292 | + " arr[j] = temp;\n", |
| 293 | + "arr" |
296 | 294 | ],
|
297 | 295 | "metadata": {
|
298 | 296 | "colab": {
|
|
332 | 330 | "L = len(numbers)\n",
|
333 | 331 | "# i goes from 0 to the middle\n",
|
334 | 332 | "for i in range(int(L/2)):\n",
|
335 |
| - " # Swap each number with the number in \n", |
| 333 | + " # Swap each number with the number in\n", |
336 | 334 | " # the mirror position for example first and last\n",
|
337 | 335 | " n = numbers[i]\n",
|
338 | 336 | " numbers[i] = numbers[L-i-1]\n",
|
|
956 | 954 | },
|
957 | 955 | {
|
958 | 956 | "cell_type": "code",
|
959 |
| - "source": [ |
960 |
| - "" |
961 |
| - ], |
| 957 | + "source": [], |
962 | 958 | "metadata": {
|
963 | 959 | "id": "OVff6hmXEf7P"
|
964 | 960 | },
|
|
967 | 963 | },
|
968 | 964 | {
|
969 | 965 | "cell_type": "code",
|
970 |
| - "source": [ |
971 |
| - "" |
972 |
| - ], |
| 966 | + "source": [], |
973 | 967 | "metadata": {
|
974 | 968 | "id": "WmpAeLcREf4H"
|
975 | 969 | },
|
|
1042 | 1036 | " last_idx = {}\n",
|
1043 | 1037 | " max_len = 0\n",
|
1044 | 1038 | " start_idx = 0\n",
|
1045 |
| - " for i in range(0, len(string)): \n", |
| 1039 | + " for i in range(0, len(string)):\n", |
1046 | 1040 | " if string[i] in last_idx:\n",
|
1047 | 1041 | " start_idx = max(start_idx, last_idx[string[i]] + 1)\n",
|
1048 | 1042 | " print(\"start_index \", start_idx)\n",
|
1049 | 1043 | "\n",
|
1050 |
| - " max_len = max(max_len, i-start_idx + 1) \n", |
| 1044 | + " max_len = max(max_len, i-start_idx + 1)\n", |
1051 | 1045 | " print(\"max_len \", max_len)\n",
|
1052 | 1046 | " # Update last index of current char.\n",
|
1053 | 1047 | " last_idx[string[i]] = i\n",
|
|
1151 | 1145 | "\n",
|
1152 | 1146 | " #return the value corresponding to the value of n\n",
|
1153 | 1147 | " return lookup[n]\n",
|
1154 |
| - " \n", |
| 1148 | + "\n", |
1155 | 1149 | "fib1(20)"
|
1156 | 1150 | ],
|
1157 | 1151 | "metadata": {
|
|
1385 | 1379 | " if seq1[idx1] == seq2[idx2]:\n",
|
1386 | 1380 | " return 1 + lcq_recursive(seq1, seq2, idx1+1, idx2+1)\n",
|
1387 | 1381 | " else:\n",
|
1388 |
| - " return max(lcq_recursive(seq1, seq2, idx1+1, idx2), \n", |
| 1382 | + " return max(lcq_recursive(seq1, seq2, idx1+1, idx2),\n", |
1389 | 1383 | " lcq_recursive(seq1, seq2, idx1, idx2+1))\n",
|
1390 | 1384 | "X = \"AGGTAB\"\n",
|
1391 | 1385 | "Y = \"GXTXAYB\"\n",
|
|
1416 | 1410 | " memo = {}\n",
|
1417 | 1411 | " def recurse(idx1, idx2):\n",
|
1418 | 1412 | " key = idx1, idx2\n",
|
1419 |
| - " \n", |
| 1413 | + "\n", |
1420 | 1414 | " if key in memo:\n",
|
1421 | 1415 | " return memo[key]\n",
|
1422 |
| - " \n", |
| 1416 | + "\n", |
1423 | 1417 | " elif idx1 == len(seq1) or idx2 == len(seq2):\n",
|
1424 | 1418 | " memo[key] = 0\n",
|
1425 | 1419 | " elif seq1[idx1] == seq2[idx2]:\n",
|
1426 | 1420 | " memo[key] = 1 + recurse(idx1+1, idx2+1)\n",
|
1427 | 1421 | " else:\n",
|
1428 |
| - " memo[key] = max(recurse(idx1+1, idx2), \n", |
| 1422 | + " memo[key] = max(recurse(idx1+1, idx2),\n", |
1429 | 1423 | " recurse(idx1, idx2+1))\n",
|
1430 |
| - " return memo[key] \n", |
| 1424 | + " return memo[key]\n", |
1431 | 1425 | " return recurse(0, 0)\n",
|
1432 | 1426 | "lcq_memoized(X, Y)"
|
1433 | 1427 | ],
|
|
1458 | 1452 | "memo = {}\n",
|
1459 | 1453 | "def recurse(seq1,seq2,idx1, idx2):\n",
|
1460 | 1454 | " key = idx1, idx2\n",
|
1461 |
| - " \n", |
| 1455 | + "\n", |
1462 | 1456 | " if key in memo:\n",
|
1463 | 1457 | " return memo[key]\n",
|
1464 |
| - " \n", |
| 1458 | + "\n", |
1465 | 1459 | " elif idx1 == len(seq1) or idx2 == len(seq2):\n",
|
1466 | 1460 | " memo[key] = 0\n",
|
1467 | 1461 | " elif seq1[idx1] == seq2[idx2]:\n",
|
1468 | 1462 | " memo[key] = 1 + recurse(seq1,seq2,idx1+1, idx2+1)\n",
|
1469 | 1463 | " else:\n",
|
1470 |
| - " memo[key] = max(recurse(seq1,seq2,idx1+1, idx2), \n", |
| 1464 | + " memo[key] = max(recurse(seq1,seq2,idx1+1, idx2),\n", |
1471 | 1465 | " recurse(seq1,seq2,idx1, idx2+1))\n",
|
1472 |
| - " return memo[key] " |
| 1466 | + " return memo[key]" |
1473 | 1467 | ],
|
1474 | 1468 | "metadata": {
|
1475 | 1469 | "id": "-3AzqiwTdLIc"
|
|
1546 | 1540 | "source": [
|
1547 | 1541 | "#12 Anagrams\n",
|
1548 | 1542 | "\n",
|
1549 |
| - "Two strings are anagrams if they're made of the same characters with the same frequencies. \n", |
| 1543 | + "Two strings are anagrams if they're made of the same characters with the same frequencies.\n", |
1550 | 1544 | "\n",
|
1551 | 1545 | "freq1 = frequencies of characters of s1<br>\n",
|
1552 | 1546 | "freq2 = frequencies of characters of s2<br>\n",
|
|
1563 | 1557 | "def are_anagrams(s1, s2):\n",
|
1564 | 1558 | " if len(s1) != len(s2):\n",
|
1565 | 1559 | " return False\n",
|
1566 |
| - " \n", |
| 1560 | + "\n", |
1567 | 1561 | " freq1 = {}\n",
|
1568 | 1562 | " freq2 = {}\n",
|
1569 | 1563 | "\n",
|
|
1680 | 1674 | " while i+1 < len(arr) and arr[i+1] == target:\n",
|
1681 | 1675 | " i+=1\n",
|
1682 | 1676 | " return [start, i]\n",
|
1683 |
| - " return [-1, -1] \n", |
| 1677 | + " return [-1, -1]\n", |
1684 | 1678 | "\n",
|
1685 | 1679 | "first_and_last([2,4,5,5,5,5,5,7,9,9], 3)\n",
|
1686 | 1680 | "\n",
|
|
1900 | 1894 | "cell_type": "code",
|
1901 | 1895 | "source": [
|
1902 | 1896 | "from collections import OrderedDict\n",
|
1903 |
| - " \n", |
| 1897 | + "\n", |
1904 | 1898 | "dict = {'ravi':'10','rajnish':'9','sanjeev':'15','yash':'2','suraj':'32'}\n",
|
1905 | 1899 | "dict1 = OrderedDict(sorted(dict.items()))\n",
|
1906 | 1900 | "print(dict1)"
|
|
1970 | 1964 | "#16.a Tiger Question\n",
|
1971 | 1965 | "\n",
|
1972 | 1966 | "inp = [1, 4, 5, 1, 1, 7, 8, 8, 4]<br>\n",
|
1973 |
| - "out = [1, 1, 1, 8, 8, 4, 4, 7, 5] " |
| 1967 | + "out = [1, 1, 1, 8, 8, 4, 4, 7, 5]" |
1974 | 1968 | ],
|
1975 | 1969 | "metadata": {
|
1976 | 1970 | "id": "_e1b6c_1YFlH"
|
|
1985 | 1979 | "outputs": [],
|
1986 | 1980 | "source": [
|
1987 | 1981 | "inp = [1, 4, 5, 1, 1, 7, 8, 8, 4]\n",
|
1988 |
| - "out = [1, 1, 1, 8, 8, 4, 4, 7, 5] " |
| 1982 | + "out = [1, 1, 1, 8, 8, 4, 4, 7, 5]" |
1989 | 1983 | ]
|
1990 | 1984 | },
|
1991 | 1985 | {
|
|
2252 | 2246 | },
|
2253 | 2247 | {
|
2254 | 2248 | "cell_type": "code",
|
2255 |
| - "source": [ |
2256 |
| - "" |
2257 |
| - ], |
| 2249 | + "source": [], |
2258 | 2250 | "metadata": {
|
2259 | 2251 | "id": "W9GDb709oOKZ"
|
2260 | 2252 | },
|
|
2264 | 2256 | {
|
2265 | 2257 | "cell_type": "markdown",
|
2266 | 2258 | "source": [
|
2267 |
| - "#TVS " |
| 2259 | + "#TVS" |
2268 | 2260 | ],
|
2269 | 2261 | "metadata": {
|
2270 | 2262 | "id": "6i7CEGGJoY9A"
|
2271 | 2263 | }
|
2272 | 2264 | },
|
2273 | 2265 | {
|
2274 | 2266 | "cell_type": "markdown",
|
2275 |
| - "source": [ |
2276 |
| - "" |
2277 |
| - ], |
| 2267 | + "source": [], |
2278 | 2268 | "metadata": {
|
2279 | 2269 | "id": "NPwgGYq7oY6h"
|
2280 | 2270 | }
|
|
2323 | 2313 | "cell_type": "code",
|
2324 | 2314 | "source": [
|
2325 | 2315 | "# C = [[0 for j in range(2)] for i in range(3)]\t#Matrix multiplication\n",
|
2326 |
| - "# for m in range(len(A)): \n", |
2327 |
| - "# for n in range(len(B[0])): \n", |
2328 |
| - "# for o in range(len(B)): \n", |
2329 |
| - "# C[m][n] += A[m][o] * B[o][n] \n", |
| 2316 | + "# for m in range(len(A)):\n", |
| 2317 | + "# for n in range(len(B[0])):\n", |
| 2318 | + "# for o in range(len(B)):\n", |
| 2319 | + "# C[m][n] += A[m][o] * B[o][n]\n", |
2330 | 2320 | "# C"
|
2331 | 2321 | ],
|
2332 | 2322 | "metadata": {
|
|
2339 | 2329 | "cell_type": "code",
|
2340 | 2330 | "source": [
|
2341 | 2331 | "# def mergeMatrix(A, B):\n",
|
2342 |
| - "C = [[0 for j in range(3+2)] for i in range(3)]\t\n", |
| 2332 | + "C = [[0 for j in range(3+2)] for i in range(3)]\n", |
2343 | 2333 | "for i in range(3):\n",
|
2344 |
| - " for j in range(3):\t\t\t\n", |
2345 |
| - " C[i][j] = A[i][j]\t \n", |
| 2334 | + " for j in range(3):\n", |
| 2335 | + " C[i][j] = A[i][j]\n", |
2346 | 2336 | "for i in range(3):\n",
|
2347 |
| - " for j in range(2):\t\t\t\n", |
| 2337 | + " for j in range(2):\n", |
2348 | 2338 | " C[i][j + 3] = B[i][j]\n",
|
2349 | 2339 | "# return C\n",
|
2350 | 2340 | "# C =\tmergeMatrix(A, B)\n",
|
|
2442 | 2432 | "source": [
|
2443 | 2433 | "F = [[0 for j in range(6)] for i in range(3)]\t## columnwise wise merging\n",
|
2444 | 2434 | "for i in range(3):\n",
|
2445 |
| - " for j in range(5):\t\t\t\n", |
2446 |
| - " F[i][j] = C[i][j]\t \n", |
| 2435 | + " for j in range(5):\n", |
| 2436 | + " F[i][j] = C[i][j]\n", |
2447 | 2437 | "for i in range(3):\n",
|
2448 |
| - " for j in range(1):\t\t\t\n", |
| 2438 | + " for j in range(1):\n", |
2449 | 2439 | " F[i][j + 5] = E[i][j]"
|
2450 | 2440 | ],
|
2451 | 2441 | "metadata": {
|
|
2486 | 2476 | "source": [
|
2487 | 2477 | "G = [[0 for j in range(5)] for i in range(4)]\t## Rowwise merging\n",
|
2488 | 2478 | "for i in range(3):\n",
|
2489 |
| - " for j in range(5):\t\t\t\n", |
2490 |
| - " G[i][j] = C[i][j]\t \n", |
| 2479 | + " for j in range(5):\n", |
| 2480 | + " G[i][j] = C[i][j]\n", |
2491 | 2481 | " # for i in range(5):\n",
|
2492 |
| - "for j in range(5):\t\t\t\n", |
| 2482 | + "for j in range(5):\n", |
2493 | 2483 | " G[3][j] = E1[j][0]\n",
|
2494 | 2484 | "G"
|
2495 | 2485 | ],
|
|
2518 | 2508 | "cell_type": "code",
|
2519 | 2509 | "source": [
|
2520 | 2510 | "sumRow = []\n",
|
2521 |
| - "for i in range(0, 6): \n", |
| 2511 | + "for i in range(0, 6):\n", |
2522 | 2512 | " sum = 0\n",
|
2523 |
| - " for j in range(0, 3): \n", |
| 2513 | + " for j in range(0, 3):\n", |
2524 | 2514 | " sum = sum + F[j][i];\n",
|
2525 |
| - " sumRow.append(sum) \n", |
| 2515 | + " sumRow.append(sum)\n", |
2526 | 2516 | "sumRow"
|
2527 | 2517 | ],
|
2528 | 2518 | "metadata": {
|
|
2550 | 2540 | "cell_type": "code",
|
2551 | 2541 | "source": [
|
2552 | 2542 | "sumCol = []\n",
|
2553 |
| - "for i in range(3): \n", |
| 2543 | + "for i in range(3):\n", |
2554 | 2544 | " sum = 0\n",
|
2555 |
| - " for j in range(6): \n", |
| 2545 | + " for j in range(6):\n", |
2556 | 2546 | " sum = sum + F[i][j];\n",
|
2557 |
| - " sumCol.append(sum) \n", |
| 2547 | + " sumCol.append(sum)\n", |
2558 | 2548 | "sumCol"
|
2559 | 2549 | ],
|
2560 | 2550 | "metadata": {
|
|
2580 | 2570 | },
|
2581 | 2571 | {
|
2582 | 2572 | "cell_type": "code",
|
2583 |
| - "source": [ |
2584 |
| - "" |
2585 |
| - ], |
| 2573 | + "source": [], |
2586 | 2574 | "metadata": {
|
2587 | 2575 | "id": "LWW9SnCOzp_Y"
|
2588 | 2576 | },
|
|
0 commit comments