+{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.10","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"n1 = '101'\nn2 = '1010' \n\n# n1 = n1[::-1]\n# n2 = n2[::-1]\n\npartial_products = []\nfor s2 in n2:\n partial_sums = []\n for s1 in n1:\n partial_sum = int(s1)*int(s2)\n partial_sums.append(partial_sum)\n partial_products.append(partial_sums)\nprint(partial_products)","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:24.287166Z","iopub.execute_input":"2023-05-12T14:53:24.287542Z","iopub.status.idle":"2023-05-12T14:53:24.294232Z","shell.execute_reply.started":"2023-05-12T14:53:24.287512Z","shell.execute_reply":"2023-05-12T14:53:24.293280Z"},"trusted":true},"execution_count":28,"outputs":[{"name":"stdout","text":"[[1, 0, 1], [0, 0, 0], [1, 0, 1], [0, 0, 0]]\n","output_type":"stream"}]},{"cell_type":"code","source":"final = []\nfor _lists in partial_products:\n result = list(map(lambda x:str(x), _lists))\n final.append(result)\nprint(final)","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:25.370400Z","iopub.execute_input":"2023-05-12T14:53:25.371106Z","iopub.status.idle":"2023-05-12T14:53:25.377992Z","shell.execute_reply.started":"2023-05-12T14:53:25.371048Z","shell.execute_reply":"2023-05-12T14:53:25.376875Z"},"trusted":true},"execution_count":29,"outputs":[{"name":"stdout","text":"[['1', '0', '1'], ['0', '0', '0'], ['1', '0', '1'], ['0', '0', '0']]\n","output_type":"stream"}]},{"cell_type":"code","source":"final = final[::-1]\nfor i, l in zip(range(1,len(final)), final[1:]):\n l += ['0']*(i)\nfinal = final[::-1]\nfor j in range(1,len(final)):\n final[j] = ['0']*(j) + final[j]\nprint(final)","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:26.273151Z","iopub.execute_input":"2023-05-12T14:53:26.273530Z","iopub.status.idle":"2023-05-12T14:53:26.281742Z","shell.execute_reply.started":"2023-05-12T14:53:26.273500Z","shell.execute_reply":"2023-05-12T14:53:26.280487Z"},"trusted":true},"execution_count":30,"outputs":[{"name":"stdout","text":"[['1', '0', '1', '0', '0', '0'], ['0', '0', '0', '0', '0', '0'], ['0', '0', '1', '0', '1', '0'], ['0', '0', '0', '0', '0', '0']]\n","output_type":"stream"}]},{"cell_type":"code","source":"sums = [''.join(element) for element in final]\nsums","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:27.367777Z","iopub.execute_input":"2023-05-12T14:53:27.368195Z","iopub.status.idle":"2023-05-12T14:53:27.376346Z","shell.execute_reply.started":"2023-05-12T14:53:27.368161Z","shell.execute_reply":"2023-05-12T14:53:27.375179Z"},"trusted":true},"execution_count":31,"outputs":[{"execution_count":31,"output_type":"execute_result","data":{"text/plain":"['101000', '000000', '001010', '000000']"},"metadata":{}}]},{"cell_type":"code","source":"final_sum = 0\nfor i in range(len(sums)):\n final_sum += int(sums[i],2)\nfinal_sum = bin(final_sum)[2:]\nprint(final_sum)","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:28.355138Z","iopub.execute_input":"2023-05-12T14:53:28.355579Z","iopub.status.idle":"2023-05-12T14:53:28.361779Z","shell.execute_reply.started":"2023-05-12T14:53:28.355541Z","shell.execute_reply":"2023-05-12T14:53:28.360704Z"},"trusted":true},"execution_count":32,"outputs":[{"name":"stdout","text":"110010\n","output_type":"stream"}]},{"cell_type":"code","source":"type(final_sum)","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:29.667954Z","iopub.execute_input":"2023-05-12T14:53:29.668365Z","iopub.status.idle":"2023-05-12T14:53:29.675453Z","shell.execute_reply.started":"2023-05-12T14:53:29.668332Z","shell.execute_reply":"2023-05-12T14:53:29.674380Z"},"trusted":true},"execution_count":33,"outputs":[{"execution_count":33,"output_type":"execute_result","data":{"text/plain":"str"},"metadata":{}}]},{"cell_type":"code","source":"print(f\"The product of {int(n1, 2)} and {int(n2, 2)} is: {int(final_sum, 2)}\")","metadata":{"execution":{"iopub.status.busy":"2023-05-12T14:53:30.474108Z","iopub.execute_input":"2023-05-12T14:53:30.474509Z","iopub.status.idle":"2023-05-12T14:53:30.480484Z","shell.execute_reply.started":"2023-05-12T14:53:30.474479Z","shell.execute_reply":"2023-05-12T14:53:30.479271Z"},"trusted":true},"execution_count":34,"outputs":[{"name":"stdout","text":"The product of 5 and 10 is: 50\n","output_type":"stream"}]},{"cell_type":"code","source":"def binary_multiplication(num1:str, num2:str)->str:\n \"\"\"\n Computes the product of two binary numbers. \n \n Args:\n ----------\n A (str) : A = (A_M-1)2^(M-1) + ... + (A_2)2^2 + (A_1)2^1 + (A_0)2^0 => A = A_M-1A_M-2....A_2A_1A_0 (M-bit binary number) \n B (str) : B = (B_N-1)2^(N-1) + ... + (B_2)2^2 + (B_1)2^1 + (B_0)2^0 => B = B_N-1B_N-2....B_2B_1B_0 (N-bit binary number)\n \n Returns:\n ----------\n A*B (str) : A*B = A(B_N-1)2^(N-1) + ... + A(B_1)2^1 + A(B_0)2^0 \n \"\"\"\n \n partial_products = []\n for s2 in num2:\n partial_sums = []\n for s1 in num1:\n partial_sum = int(s1)*int(s2)\n partial_sums.append(partial_sum)\n partial_products.append(partial_sums)\n \n final = []\n for _lists in partial_products:\n result = list(map(lambda x:str(x), _lists))\n final.append(result)\n \n final = final[::-1]\n for i, l in zip(range(1,len(final)), final[1:]):\n l += ['0']*(i)\n final = final[::-1]\n for j in range(1,len(final)):\n final[j] = ['0']*(j) + final[j]\n \n sums = [''.join(element) for element in final]\n \n final_sum = 0\n for i in range(len(sums)):\n final_sum += int(sums[i],2)\n final_sum = bin(final_sum)[2:]\n \n return final_sum","metadata":{"execution":{"iopub.status.busy":"2023-05-12T15:05:36.123454Z","iopub.execute_input":"2023-05-12T15:05:36.123929Z","iopub.status.idle":"2023-05-12T15:05:36.135985Z","shell.execute_reply.started":"2023-05-12T15:05:36.123892Z","shell.execute_reply":"2023-05-12T15:05:36.135107Z"},"trusted":true},"execution_count":37,"outputs":[]},{"cell_type":"code","source":"a = bin(int(input(\"Number-1: \")))[2:]\nb = bin(int(input(\"Number-2: \")))[2:]\n\nproduct = binary_multiplication(a,b)\nprint(f\"The product of {int(a,2)} and {int(b, 2)} is: {int(product, 2)}\")","metadata":{"execution":{"iopub.status.busy":"2023-05-12T15:07:18.230013Z","iopub.execute_input":"2023-05-12T15:07:18.230485Z","iopub.status.idle":"2023-05-12T15:07:22.803102Z","shell.execute_reply.started":"2023-05-12T15:07:18.230444Z","shell.execute_reply":"2023-05-12T15:07:22.801866Z"},"trusted":true},"execution_count":39,"outputs":[{"output_type":"stream","name":"stdin","text":"Number-1: 34\nNumber-2: 21\n"},{"name":"stdout","text":"The product of 34 and 21 is: 714\n","output_type":"stream"}]},{"cell_type":"code","source":"binary_multiplication??","metadata":{"execution":{"iopub.status.busy":"2023-05-12T15:05:42.704373Z","iopub.execute_input":"2023-05-12T15:05:42.704767Z","iopub.status.idle":"2023-05-12T15:05:42.727505Z","shell.execute_reply.started":"2023-05-12T15:05:42.704737Z","shell.execute_reply":"2023-05-12T15:05:42.726195Z"},"trusted":true},"execution_count":38,"outputs":[{"output_type":"display_data","data":{"text/plain":"\u001b[0;31mSignature:\u001b[0m \u001b[0mbinary_multiplication\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum2\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;31mSource:\u001b[0m \n\u001b[0;32mdef\u001b[0m \u001b[0mbinary_multiplication\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"\u001b[0m\n\u001b[0;34m Computes the product of two binary numbers. \u001b[0m\n\u001b[0;34m \u001b[0m\n\u001b[0;34m Args:\u001b[0m\n\u001b[0;34m ----------\u001b[0m\n\u001b[0;34m A (str) : A = (A_M-1)2^(M-1) + ... + (A_2)2^2 + (A_1)2^1 + (A_0)2^0 => A = A_M-1A_M-2....A_2A_1A_0 (M-bit binary number) \u001b[0m\n\u001b[0;34m B (str) : B = (B_N-1)2^(N-1) + ... + (B_2)2^2 + (B_1)2^1 + (B_0)2^0 => B = B_N-1B_N-2....B_2B_1B_0 (N-bit binary number)\u001b[0m\n\u001b[0;34m \u001b[0m\n\u001b[0;34m Returns:\u001b[0m\n\u001b[0;34m ----------\u001b[0m\n\u001b[0;34m A*B (str) : A*B = A(B_N-1)2^(N-1) + ... + A(B_1)2^1 + A(B_0)2^0 \u001b[0m\n\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mpartial_products\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ms2\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnum2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mpartial_sums\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ms1\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnum1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mpartial_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mpartial_sums\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpartial_sum\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mpartial_products\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpartial_sums\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_lists\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpartial_products\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_lists\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ml\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0ml\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'0'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0msums\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m''\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0melement\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0melement\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfinal\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msums\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal_sum\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msums\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0mfinal_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfinal_sum\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;34m\u001b[0m\n\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfinal_sum\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;31mFile:\u001b[0m /tmp/ipykernel_35/215289616.py\n\u001b[0;31mType:\u001b[0m function"},"metadata":{}}]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}
0 commit comments