You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
63 KiB
Plaintext
278 lines
63 KiB
Plaintext
2 years ago
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"id": "6975250a-539e-40bd-ac35-4204ff4e3181",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"# program to counter letter occurances in a string, or a word\n",
|
||
|
"# methods modified from \n",
|
||
|
"# https://www.geeksforgeeks.org/python-program-to-find-occurrence-to-each-character-in-given-string/"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 16,
|
||
|
"id": "acee5120-ae82-4a9f-bbfb-14148e17d4ef",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"tulip is composed of these letters and occurances :\n",
|
||
|
" {'u': 1, 't': 1, 'i': 1, 'p': 1, 'l': 1}\n",
|
||
|
"pulpit is composed of these letters and occurances :\n",
|
||
|
" {'u': 1, 't': 1, 'i': 1, 'p': 2, 'l': 1}\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# 法一\n",
|
||
|
"def set_counter(inp_str):\n",
|
||
|
" # using set() + count() to get count\n",
|
||
|
" # of each element in string\n",
|
||
|
" out = {x : inp_str.count(x) for x in set(inp_str )}\n",
|
||
|
" # printing result\n",
|
||
|
" print (\"{} is composed of these letters and occurances :\\n \".format(inp_str)+ str(out))\n",
|
||
|
"\n",
|
||
|
"set_counter(\"tulip\")\n",
|
||
|
"set_counter(\"pulpit\")\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 15,
|
||
|
"id": "0bf4971c-7490-4dbf-910e-0502d9593a17",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"tulip composed of these letters and occurances : \n",
|
||
|
"{'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1}\n",
|
||
|
"pulpit composed of these letters and occurances : \n",
|
||
|
"{'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1}\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# 法二\n",
|
||
|
"# initializing string\n",
|
||
|
"def freq_dict(inp_str):\n",
|
||
|
" # frequency dictionary\n",
|
||
|
" freq = {}\n",
|
||
|
" \n",
|
||
|
" for ele in inp_str:\n",
|
||
|
" if ele in freq:\n",
|
||
|
" freq[ele] += 1\n",
|
||
|
" else:\n",
|
||
|
" freq[ele] = 1\n",
|
||
|
" # printing result\n",
|
||
|
" print (\"{} composed of these letters and occurances : \\n\".format(inp_str)+ str(freq))\n",
|
||
|
"\n",
|
||
|
"freq_dict(\"tulip\")\n",
|
||
|
"freq_dict(\"pulpit\")\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 17,
|
||
|
"id": "a2ce38d4-9407-4e05-a82a-e38667c18367",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"tulip is composed of these letters and occurances :\n",
|
||
|
" Counter({'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1})\n",
|
||
|
"pulpit is composed of these letters and occurances :\n",
|
||
|
" Counter({'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1})\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# 法三\n",
|
||
|
"from collections import Counter\n",
|
||
|
"\n",
|
||
|
"def collection_counter(inp_str):\n",
|
||
|
"\n",
|
||
|
" # using collections.Counter() to get\n",
|
||
|
" # count of each element in string\n",
|
||
|
" oup = Counter(inp_str)\n",
|
||
|
"\n",
|
||
|
" # printing result\n",
|
||
|
" print (\"{} is composed of these letters and occurances :\\n \".format(inp_str)+ str(oup))\n",
|
||
|
"\n",
|
||
|
"collection_counter(\"tulip\")\n",
|
||
|
"collection_counter(\"pulpit\")\n",
|
||
|
" \n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"id": "9bf3deb3-467d-4056-8a1b-1df257508356",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"# this program can take two input words can see if they are anagrams? \n",
|
||
|
"# isAnagram \n",
|
||
|
"# hester mofet \n",
|
||
|
"# are there anagrams in non-alphabetical word arrangements? yes, but in scalable units"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 26,
|
||
|
"id": "4f079374-28d7-4c44-935c-7d26fe9f4691",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"# method to see if a pair of words are anagrams to each other\n",
|
||
|
"def set_counter(inp_str):\n",
|
||
|
" return {x : inp_str.count(x) for x in set(inp_str )}\n",
|
||
|
"\n",
|
||
|
"def areAnagrams(str1, str2):\n",
|
||
|
" out1 = {}\n",
|
||
|
" out2 = {}\n",
|
||
|
" #apply set counter method to each of the words and store the output \n",
|
||
|
" out1 = set_counter(str1)\n",
|
||
|
" out2 = set_counter(str2)\n",
|
||
|
" # compare output \n",
|
||
|
" if out1 == out2:\n",
|
||
|
" return True\n",
|
||
|
" else: \n",
|
||
|
" return False "
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 36,
|
||
|
"id": "1f4fab84-aeec-4b6f-af67-a76d2af5e20c",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"<matplotlib.image.AxesImage at 0x7f14448dbd00>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 36,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 432x288 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {
|
||
|
"needs_background": "light"
|
||
|
},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# Python program to read\n",
|
||
|
"# image using matplotlib\n",
|
||
|
"\n",
|
||
|
"# importing matplotlib modules\n",
|
||
|
"import matplotlib.image as mpimg\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"\n",
|
||
|
"# Read Images\n",
|
||
|
"img = mpimg.imread('therestofme.jpg')\n",
|
||
|
"\n",
|
||
|
"# Output Images\n",
|
||
|
"print(\"~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~\")\n",
|
||
|
"plt.imshow(img)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 27,
|
||
|
"id": "3df449e7-93d0-499b-8ea5-84bdba8cd165",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"True"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 27,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"areAnagrams(\"hestermofet\",\"therestofme\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 28,
|
||
|
"id": "b517982e-ef53-4424-8a2c-5baf2cdccb1d",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"False"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 28,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"areAnagrams(\"hester mofet\",\"the rest of me\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "7af1e993-ca08-41eb-924e-d66b44a3480d",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"in this case the empty strings are also counted. "
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"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.9.7"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 5
|
||
|
}
|